我有一个smalldatetime类型的列,日期
我想运行只检索行的查询:
其中date = convert(smalldatetime,GetDate())
然而,这是永远不会找到匹配,因为它也在比较时间。
即:01-01-2010 12:23:00!= 01-01-2010 12:25:00
如何才能在日期部分找到匹配项?
答案 0 :(得分:3)
利用索引的一种方法
where date >= dateadd(dd, datediff(dd, 0, getdate()), 0)
and date < dateadd(dd, datediff(dd, 0, getdate()), +1)
答案 1 :(得分:2)
尝试:
where datediff(dd, yourdate, GetDate()) = 0
答案 2 :(得分:1)
将DateTime值转换为Date值。这将仅存储您要比较的日期部分。
MSSQL中可用的日期和时间数据类型列表为here。
答案 3 :(得分:0)
where cast(CONVERT(char(10),DATETIME_FIELD_1,101) as datetime)
= cast(CONVERT(char(10),DATETIME_FIELD_2,101) as datetime)
答案 4 :(得分:0)
你可以尝试:
Where CAST(FLOOR(CAST([Date] AS FLOAT)) AS DATETIME) = CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
这会使两个日期显示为:
2010-08-05 00:00:00.000
因此只比较忽略时间的日期
答案 5 :(得分:0)
发现了这个:
CAST(CONVERT (CHAR(8), GETDATE(), 112) AS smalldatetime)
从这里: reference
当我将smalldatetime字段添加到现有表时,这个sql对我有用:
SELECT testing
FROM LTCCAssessment
WHERE (testing = CAST(CONVERT(CHAR(8), GETDATE(), 112) AS smalldatetime))