30 秒偏移量与 SQL 上的 smalldatetime 比较

30 second offset with smalldatetime comparison on SQL

我在比较 SQL 服务器中的日期(实际上是 smalldatetime)时遇到了一个奇怪的问题。比较接近一天结束的日期时,似乎有 30 秒 offset/bias:

这是正确的:

但这绝对是不正确的:

这里发生了什么?数学坏了吗?

smalldatetime type has a accuracy of one minute 所以文字 '2019-12-31 23:59:30' 被四舍五入为 '2020-01-01 00:00:00'。

如果您阅读 smalldatetime 的 [文档][1],您将看到这条注释:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql?view=sql-server-2017

Accuracy One minute

换句话说,文字值正在四舍五入。因此,所见即所得。