SQL毫秒精度

Eli*_*yal 4 sql-server datetime

我在SQL中的DATETIME字段中存储时间,但是当我尝试删除少于该值的任何内容时,它实际上是删除该值.例如:

我的价值2015-06-24 16:32:42.当我运行以下查询时,它会在表格中显示243,即使它不在其范围内,它也会删除该值.为什么?

DELETE FROM MyTable
WHERE  MyDate <= '2015-06-24 16:32:42.242' 
Run Code Online (Sandbox Code Playgroud)

有精确问题吗?

Mar*_*ith 6

legacy datetime数据类型中的值仅存储到大约1/300的精度.

有效的MS的结局是0,3,7什么都将被四舍五入到最接近的那些(5是等距的37,并四舍五入到7,这是仅为2ms调整).

因此.242.243隐式转换为舍入到datetime

如果您使用的是SQL Server 2008+,则可以使用datetime2(3)完整的ms精度.

或者只是使用

DELETE FROM MyTable WHERE MyDate < '2015-06-24 16:32:42.243'
Run Code Online (Sandbox Code Playgroud)