Datatable.select和DateTime出错

时间:2018-05-17 08:03:25

标签: c# sql datetime datatable

我有一个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;?

2 个答案:

答案 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") + "'");