为什么函数CONVERT对结果进行四舍五入?
当我GETDATE在 SQL Server 中执行时,我得到,例如:
2021-01-29 17:07:56.319
但是当我把它放在一个CONVERT函数中时,它会将结果四舍五入,例如:
SELECT CONVERT(datetime, '2021-01-29 17:07:56.319', 121);
返回
'2021-01-29 17:07:56.320'
为什么?
尽管
SELECT CONVERT(datetime2, '2021-01-29 17:07:56.319');
返回预期结果:
'2021-01-29 17:07:56.319'
我的 SQL Server 是 2017 (v14.0.1000)。
谢谢
回答
它与 无关CONVERT,与您选择的数据类型有关。根据它的文档:
准确度:四舍五入到 .000、.003 或 0.007 秒的增量
如果您希望您的值精确到 1/1000 秒,请使用具有该精度的数据类型。
SELECT CONVERT(datetime2(3), '2021-01-29 17:07:56.319', 121);
旁注:SQL Server 版本 14.0.1000(.169 我假设) 是 SQL Server 2017 RTM。您已经 4 年没有更新您的 SQL Server 版本了!打开 Windows 更新并将该实例获取到受支持的版本!