我有一个运行在兼容级别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,并看到涉及日期时间转换的舍入更改,但是我似乎没有任何解释。
感谢您的帮助。