如何将C#中的日期字符串变量与sql查询中的datetime字段进行比较

时间:2012-09-08 23:11:08

标签: c# sql datetime

我有以下代码,我正在尝试将日期字符串与日期时间进行比较,但我无法使其工作。这不会输出任何行。

DataTable tbl3 = dii.SelectGeneric("select * from widget_messages  where convert(datetime, m_date) ='" + String.Format("{0:d/M/yyyy}", DateUsed) + "'");

两个日期时间的格式完全相同。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您要将m_date转换为datetime,但DateUsed仍为字符串。

你应该将它们比作字符串,比如

DataTable tbl3 = dii.SelectGeneric("select * from widget_messages  where m_date ='" + String.Format("{0:d/M/yyyy}", DateUsed) + "'");

或作为日期时间,如下:

DataTable tbl3 = dii.SelectGeneric("select * from widget_messages  where convert(datetime, m_date) = convert(datetime,'" + String.Format("{0:d/M/yyyy}", DateUsed) + "')");

编辑:在SQL Server 2005上试试这个:

DataTable tbl3 = dii.SelectGeneric("select * from widget_messages  where abs(datediff(day,convert(datetime, m_date), convert(datetime,'" + String.Format("{0:d/M/yyyy}", DateUsed) + "'))) = 0");

答案 1 :(得分:0)

如果m_date字段是Date / DateTime类型,则以下代码将正常工作。

DataTable tbl3 = dii.SelectGeneric("select * from widget_messages  where convert(varchar, m_date, 12) ='" + String.Format("{0:yyyyMMdd}", DateUsed) + "'");