为什么函数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 更新并将该实例获取到受支持的版本!


以上是为什么函数CONVERT对结果进行四舍五入?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>