DATEPART MILLISECONDS的差异从COMPATIBILITY_LEVEL 120到130

我有一个运行在兼容级别120中的SQL Server 2016数据库。当我运行以下查询时:

ALTER DATABASE testdb SET COMPATIBILITY_LEVEL = 120

DeclARE @d VARCHAR(30) = '2019-11-05 07:31:47.677'
DeclARE @dt DATETIME = @d
SELECT @d as [@d],@dt as [@dt],DATEPART(MILLISECOND,@d) as [@ms_d],@dt) as [@ms_dt]

我得到了预期的结果:

@d                             @dt                     @ms_d       @ms_dt
------------------------------ ----------------------- ----------- -----------
2019-11-05 07:31:47.677        2019-11-05 07:31:47.677 677         677

但是,当我将兼容性级别更改为130时,我得到:

@d                             @dt                     @ms_d       @ms_dt
------------------------------ ----------------------- ----------- -----------
2019-11-05 07:31:47.677        2019-11-05 07:31:47.677 677         676

有人想到为什么在兼容级别130下获得 676 吗?

我已经查看了Changes in compatibility level 130,并看到涉及日期时间转换的舍入更改,但是我似乎没有任何解释。

感谢您的帮助。

toddfsy001 回答:DATEPART MILLISECONDS的差异从COMPATIBILITY_LEVEL 120到130

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3156721.html

大家都在问