SQL Server:忽略几毫秒的日期时间比较

4

我注意到,如果一个日期与另一个日期相等,那么它们将被视为相等。

2010-12-31 15:13:48.000 

另一个

,与此同时

2010-12-31 15:13:48.001.

一开始我认为是将时间四舍五入到最近的整秒,但事实证明并非如此。

2010-12-31 15:13:48.002 

正确地注册差异。

你有任何想法为什么会发生这种情况吗?

2个回答

7
datetime 数据类型精确到毫秒(0.0033 秒),因此您的结果是有意义的。值会被四舍五入到 0.000、0.003 和 0.007。因此,您的第一个示例被四舍五入为:"2010-12-31 15:13:48.000",第二个被四舍五入为 "2010-12-31 15:13:48.003"。
您可以在文档中阅读相关内容。

是的,完全正确。您也可以在此处查看:https://msdn.microsoft.com/zh-cn/library/ms187819.aspx - Ionic
1
我想补充一下,datetime2更加精确(100纳秒),因此如果需要毫秒级别的精度,应选择datetime2数据类型。 - Zohar Peled

0

SQL Server将日期时间存储到1/300秒(约3.33毫秒)的精度中,正如文档所述

从1753年1月1日至9999年12月31日的日期和时间数据,精确到三百分之一秒(相当于3.33毫秒或0.00333秒)。值会按照表格中显示的方式舍入为.000、.003或.007秒的增量。

因此,根据舍入发生的位置,相差不超过三毫秒的时间戳可能被视为相等。


太棒了。谢谢! - El General Magnifico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接