select * from sampleTable where CONVERT(VARCHAR(20),DateCreated,101) = CONVERT(VARCHAR(20),CAST('Feb 15 2012 7:00:00:000PM' AS DATETIME),101)
我想比较没有时间的日期
以上查询可以吗?或您建议的其他更好的解决方案
不要使用convert-无原因地涉及字符串。一个技巧是日期时间实际上是一个数字,而天是整数部分(时间是小数部分);因此,一天是值的 底数 :那只是数学,而不是字符串-快得多
declare @when datetime = GETUTCDATE() select @when -- date + time declare @day datetime = CAST(FLOOR(CAST(@when as float)) as datetime) select @day -- date only
在您的情况下,无需转换回日期时间;并使用范围可以进行最有效的比较(尤其是在建立索引的情况下):
declare @when datetime = 'Feb 15 2012 7:00:00:000PM' declare @min datetime = FLOOR(CAST(@when as float)) declare @max datetime = DATEADD(day, 1, @min) select * from sampleTable where DateCreated >= @min and DateCreated < @max