小编典典

SQL Server中奇怪的日期时间行为

sql

 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中


阅读 159

收藏
2021-05-30

共1个答案

小编典典

您有精度问题。.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)设置为毫秒级。

2021-05-30