您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL Server DateTime 参数“四舍五入”警告

SQL Server DateTime 参数“四舍五入”警告

这是因为 DATETIME 数据类型的准确性,它具有准确性 ( quote):

舍入到 .000、.003 或 0.007 秒的增量

所以是的,在某些情况下您必须小心(例如,23:59:59.999 将向上舍入到第二天的 00:00,23:59:59.998 将向下舍入到 23:59:59.997)

SELECT CAST('2010-08-27T23:59:59.997' AS DATETIME)
SELECT CAST('2010-08-27T23:59:59.998' AS DATETIME)
SELECT CAST('2010-08-27T23:59:59.999' AS DATETIME)

sql Server 2008 开始,有一种新的DATETIME2数据类型,可提供低至 100 纳秒的更高准确度。

当我对包含时间元素的 DATETIME 字段进行查询时,出于这个原因,我不使用 BETWEEN。

例如我更喜欢

WHERE DateField >= '2010-08-27' AND DateField < '2010-08-28'

代替:

WHERE DateField BETWEEN '2010-08-27' AND '2010-08-27T23:59:59.997'
SQLServer 2022/1/1 18:53:09 有377人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶