【发布时间】:2016-05-16 18:52:44
【问题描述】:
我有一个简单的查询:
SELECT *
FROM TABLE
WHERE EventDateTime BETWEEN '2016-05-12 00:00:00' and '2016-05-12 23:59:59'
由于某种原因,查询输出包括日期时间为 2016-05-13 00:00:00 的行。
使用 CAST 将字符串转换为日期时间会删除 2015-05-13 的值:
SELECT *
FROM TABLE
WHERE EventDateTime BETWEEN CAST('2016-05-12 00:00:00' AS DateTime) and CAST('2016-05-12 23:59:59' AS DateTime)
这是什么原因造成的?
【问题讨论】:
-
您的数据类型是 smalldatetime 吗?文档说 23:59:59 的值将四舍五入。也许使用 >= 和 msdn.microsoft.com/en-us/library/ms182418.aspx
-
@Jeremy 好电话!我认为这就是造成它的原因
-
顺便说一句:您应该将日期时间文字更改为
'YYYY-MM-DDThh:mm:ss'(即'2016-05-12T00:00:00'和'2016-05-12T23:59:59')。见这里:social.msdn.microsoft.com/Forums/sqlserver/en-US/…
标签: sql sql-server-2005