T-SQL 日期时间到日期的转换 - 容差

Mar*_*per 3 t-sql sql-server 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 ))
Run Code Online (Sandbox Code Playgroud)

结果:

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

为什么01Jan2013 23:59:59.999回来是1 月 2 日而不是 1 月 1 日?

Ada*_*ski 5

因为日期时间类型中没有 0.999 和 0.998 秒的小数部分。您只有 0.990、0.993 和 0.997。

因此 0.998 向下舍入为 0.997,而 0.999 则向上舍入。阅读有关该类型的更多信息。