我有一个Datatable
,其中包含一列" Datum"那是typeof(DateTime)
。
我想选择实际月份的所有行:
DataRow[] foundRows = dt.Select("Datum >='" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1) + "' AND Datum <='" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)) + "'");
我收到了错误
无法执行&#39;&lt; =&#39; System.String和System.DateTime
上的操作
如果我拆分select语句,第一个运行良好,第二个得到相同的错误:
选择1正在运行:
DataRow[] foundRows1 = dsLinie.Tables[0].Select("Datum >='" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1) + "'");
选择2获取错误:
DataRow[] foundRows2 = dsLinie.Tables[0].Select("Datum <='" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)) + "'");
为什么我会收到错误,两个select语句都查询相同的DateTime
列&#34; Datum&#34;?
答案 0 :(得分:0)
我不知道,为什么第一个工作而第二个工作没有,但你是否尝试将日期置于#AND之间以明确地将datetime-values转换为字符串?
DataRow[] foundRows = dt.Select("Datum >=#" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString() + "# AND Datum <=#" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)).ToString() + "#");
答案 1 :(得分:0)
所以我明白了。我尝试了第二个选择并插入了日期手册:
DataRow[] foundRows2 = dsLinie.Tables[0].Select("Datum <='" + new DateTime(DateTime.Now.Year, DateTime.Now.Month,1)) + "'");
直到当天不大于12时才有效。所以它必须是c#和sql之间日期格式的东西。 为我的问题找到了这个answer:
使用标准日期时间格式“s”还将确保国际化兼容性(MM / dd与dd / MM):
myDateTime.ToString("s");
=&GT; 2013-12-31T00:00:00
完整的工作声明:
DataRow[] foundRows = dt.Select("Datum >='" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("s") + "' AND Datum <='" + new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month)).ToString("s") + "'");