为什么函数CONVERT round的结果?



当我在SQL Server中执行GETDATE时,我得到,例如:

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'

My SQL Server is 2017 (v14.0.1000).

感谢

这与CONVERT无关,与您选择的数据类型有关。根据它的文档:

精度:四舍五入到0.00000、0.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 2017RTM. 你已经4年没有更新你的SQL Server版本了!打开Windows Update并获得该实例的支持版本!

最新更新