Sql server SQL毫秒精度
我将时间存储在SQL中的DATETIME字段中,但当我尝试删除任何小于该值的内容时,实际上是在删除该值。例如: 我在表中有一个值2015-06-24 16:32:42.243 当我运行下面的查询时,它会删除该值,即使该值不在其范围内。为什么?Sql server SQL毫秒精度,sql-server,datetime,Sql Server,Datetime,我将时间存储在SQL中的DATETIME字段中,但当我尝试删除任何小于该值的内容时,实际上是在删除该值。例如: 我在表中有一个值2015-06-24 16:32:42.243 当我运行下面的查询时,它会删除该值,即使该值不在其范围内。为什么? DELETE FROM MyTable WHERE MyDate <= '2015-06-24 16:32:42.242' 从MyTable中删除 其中,旧式datetime数据类型中的MyDate值仅存储为约1/300秒的精度 有效的ms结尾
DELETE FROM MyTable
WHERE MyDate <= '2015-06-24 16:32:42.242'
从MyTable中删除
其中,旧式datetime
数据类型中的MyDate值仅存储为约1/300秒的精度
有效的ms结尾是0
,3
,7
其他任何结尾都将四舍五入到最接近的结尾(5
在3
和7
之间等距,并四舍五入到7
,这是唯一的2ms调整)
因此,当隐式转换为datetime时,.242
被四舍五入为.243
如果您使用的是SQL Server 2008+版,则可以使用datetime2(3)
获得完全毫秒精度
或者只是使用
DELETE FROM MyTable WHERE MyDate < '2015-06-24 16:32:42.243'
从MyDate所在的MyTable中删除<'2015-06-24 16:32:42.243'
进一步阅读: