如何使用sql查询从数据集中获取行?

时间:2009-05-27 12:12:11

标签: c# .net asp.net

我需要排好一些。它们来自sql TARIH(sql列)是smalldatetime格式。但是给我错误:DataRow [] rows = dsChart.Tables [0] .Select(“TARIH< ='”+ datestart +“”+ txtStartDateTime.Text +“'和TARIH> ='”+ dateend +“”+ txtEndDateTime的.text + “'”);

无法对System.DateTime和System.String执行'< ='操作。

 dsChart = eReport.ToDataSet();
                    if (txtStartDateTime.Text != "" && txtEndDateTime.Text != "")
                        if (ValidateHoursGap(txtStartDateTime.Text.Trim()) &&
                            ValidateHoursGap(txtEndDateTime.Text.Trim()))
                        {
                            DataRow[] rows = dsChart.Tables[0].Select("TARIH>='" + datestart + " " + txtStartDateTime.Text + "' and TARIH<='" + dateend + " " + txtEndDateTime.Text+"'");
                            dsChart.Tables[0].Rows.Clear();
                            dsChart.Tables[0].Rows.Add(rows);
                        }

2 个答案:

答案 0 :(得分:0)

我的猜测是它没有将你的字符串识别为有效的日期时间。最简单的方法是使用适当的SQL函数将字符串转换为日期。

假设它是SQL2005,您需要使用CONVERT: http://msdn.microsoft.com/pt-br/library/ms187928.aspx

所以它看起来与此类似: TARIH&gt; = CONVERT(smalldatetime,'“+ datestart +”“+ txtStartDateTime.Text +”',)

格式是描述您用于字符串的格式的数字,上面的链接包含有效格式列表。

答案 1 :(得分:0)

我的猜测是它无法将datestart + " " + txtStartDateTime.Text解析为DateTime,因此将其视为字符串。

我会在调用Select方法之前执行此转换,然后使用DateTime.ToString()传递适用于DateTime.Parse的日期时间格式(由Select内部使用)。例如如果datestart的格式为“dd / MM / yyyy”,则txtStartDateTime的预期输入格式为“HH:mm”

int hours = txtStartDateTime.Text.Substring(0,2);
int minutes = txtStartDateTime.Text.Substring(3,2);    
DateTime dtStart = new DateTime(Int32.Parse(datestart.Substring(5)), Int32.Parse(datestart.Substring(3,2)), Int32.Parse(datestart.Substring(0,2)), Int32.Parse(hours), Int32.Parse(minutes));

然后致电

string dateFormat = "{0:s}";  
DataRow[] rows = dsChart.Tables[0].Select(string.Format("TARIH >= '{0}' AND TARIH <= '{1}'"), dtStart.ToString(dateFormat), dtEnd.ToString(dateFormat));