Sql server SQL毫秒精度

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结尾

我将时间存储在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结尾是
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'
进一步阅读: