MS SQL将字符串转换为日期时间问题



我试图将字符串转换为日期时间,但得到一个意想不到的结果。

Select Convert(DateTime, '2015-08-10 13:08:01.725', 121);

结果:

2015-08-10 13:08:01.727

注意毫秒从725变成了727。

我使用Microsoft SQL Server 2014 (SP3-CU2) (KB4482960) - 12.0.6214.1 (X64)。

这是意料之中的,datetime只能精确到1/300秒,而。725不能用它来表示。因此,它被四舍五入到最接近的1/300,即。726666666666~,然后显示为。727,因为显示层精确到3位。

如果您希望精确到1/1000秒,请使用更精确的数据类型。datetime2(3)似乎是你所追求的:

SELECT CONVERT(datetime2(3), '2015-08-10 13:08:01.725', 121);

这是因为DATETIME被四舍五入到0.00000、0.003或0.007秒的增量

直接来自Microsoft文档

最新更新