我刚刚运行了这个查询。
Select *
from ProjectData
where logtime between '2012-09-25 12:00:00.000' and '2012-09-25 12:59:59.999'
order by LogTime
为了在12小时内找到所有的记录,我们每秒都记录一次,因此我期望会有3600条记录,但令我惊讶的是,我得到了3601条记录,最后一条记录的时间是
2012-09-25 13:00:00.000
有没有想法为什么会选择这条记录?即使Between
包括给定的值,但这个值仍然高于条件。我正在使用SQL Server 2012 Express版。
2012-09-25 12:59:59.999
和2012-09-25 13:00:00.000
这样的日期区分开来。也许你应该将搜索限制在2012-09-25 12:59:59
作为上限条件? - Carsten MassmannDATETIME
的精度为3.33毫秒-因此在您的情况下,您的第二个值将会被“四舍五入”到2012-09-25 13:00:00.000
,因为DATETIME
可以容纳以.990
、.993
、.997
和.000
结尾的值。如果您坚持使用DATETIME
,可以改用DATETIME2
(精度更高!),或者使用'2012-09-25 12:59:59.997'
作为您的第二个值。 - marc_sDATETIME2
,您可以根据需要选择精度;带有三位小数秒(精度:1毫秒)的DATETIME2(3)
实际上比DATETIME
使用更少的存储空间(7个字节而不是8个),因此不会出现负性能影响。 - marc_s