我有以下代码,我正在尝试将日期字符串与日期时间进行比较,但我无法让它工作。这不会输出任何行。
DataTable tbl3 = dii.SelectGeneric("select * from widget_messages where convert(datetime, m_date) ='" + String.Format("{0:d/M/yyyy}", DateUsed) + "'");
两个日期时间的格式完全相同。有什么想法吗?
您正在转换m_date
todatetime
但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");
如果 m_date 字段是 Date/DateTime 类型,则以下代码可以正常工作。
DataTable tbl3 = dii.SelectGeneric("select * from widget_messages where convert(varchar, m_date, 12) ='" + String.Format("{0:yyyyMMdd}", DateUsed) + "'");