T-SQL DateTime到日期转换 - 容差

时间:2013-03-27 11:55:24

标签: sql-server tsql datetime date-conversion

我们试图从DateTime变量中删除时间:

DECLARE @Date DateTime 

SET @Date = '01Jan2013 23:59:59.998'
PRINT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date ))

SET @Date = '01Jan2013 23:59:59.999'
PRINT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date ))

结果:

  

2013年1月1日12:00 AM
  2013年1月2日12:00 AM

为什么01Jan2013 23:59:59.999会以 1月2日而不是1月1日的形式返回?

1 个答案:

答案 0 :(得分:4)

因为在datetime类型中没有.999和.998分数。你只有.990,.993和.997。

所以.998向下舍入到.997,而.999向上舍入。 阅读有关该类型的更多信息。