【发布时间】:2018-11-29 07:01:16
【问题描述】:
我有一个DataTable,其中一个DateTime 存储为string,例如“20.12.2017”。
我想选择过去 6 个月内的所有行。
我可以使用foreach:
foreach (DataRow dr in dsErgebnisse.Tables[0].Rows)
{
if (Convert.ToDateTime(dr[6].ToString()) > DateTime.Now.AddMonths(-6))
{
dsTemp.Tables[0].ImportRow(dr);
}
}
这给了我 3.613 行。
我尝试通过选择来检查它是否更快:
DataRow[] foundRows = dsErgebnisse.Tables[0].Select("DATUM > '" + DateTime.Now.AddMonths(-6).ToShortDateString() + "'");
DATUM 是我的列,DateTime 存储为字符串。
这给了我 2.624 行。
为什么会有差异?
我尝试在 select 语句中使用 convert 但我失败了 System.Data.EvaluateException:
foundRows = dsErgebnisse.Tables[0].Select("Convert(DATUM, 'System.DateTime') > '" + DateTime.Now.AddMonths(-6).ToShortDateString() + "'");
【问题讨论】:
标签: c# sql datetime select datatable