sql服务器-sql毫秒精度



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

我在一个表中有一个值2015-06-24 16:32:42。243当我运行下面的查询时,它会删除该值,即使它不在它的范围内。为什么?

DELETE FROM MyTable
WHERE  MyDate <= '2015-06-24 16:32:42.242' 

是否存在精度问题?

传统datetime数据类型中的值仅以大约1/300秒的精度存储。

有效的ms结尾是037,任何其他的都将四舍五入到这些结尾中最接近的一个(537之间等距,并四舍五进到7,这是唯一的2ms调整)。

因此,当隐式转换为datetime 时,.242四舍五入为.243

如果您使用的是SQL Server 2008+,则可以使用datetime2(3)来获得全毫秒精度。

或者只使用

DELETE FROM MyTable WHERE MyDate < '2015-06-24 16:32:42.243'

相关内容

  • 没有找到相关文章