declare @data datetime set @data = '2011-01-01 23:59:59:999' select @data
结果是:
2011-01-02 00:00:00.000
第二个例子:
declare @data datetime set @data = '2011-01-01 23:59:59:999' select 1 where @data >= '2011-01-02 00:00:00:000'
结果
1
我的问题是为什么以及如何使其正确?
问题是在SQL Server 2008中
您有精度问题。.999会四舍五入为.000。
.997尽可能接近第二天。
declare @data datetime set @data = '2011-01-01T23:59:59.997' select @data
在此处查看有关“日期时间小数秒精度的舍入”的部分 http://msdn.microsoft.com/zh- cn/library/ms187819.aspx
如果您使用的是SQL Server 2008,则可以将datetime2(3)设置为毫秒级。