我需要排好一些。它们来自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);
}
答案 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));