我试图将字符串转换为日期时间,但得到一个意想不到的结果。
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文档