SQL Server 2008和毫秒

在SQL Server 2008中,为什么以下查询返回相同的值?

-- These all return 2011-01-01 23:59:59.997
SELECT CAST('2011-01-01 23:59:59.997' as datetime)
SELECT CAST('2011-01-01 23:59:59.998' as datetime)

为什么下面的查询到了第二天呢?

-- Returns 2011-01-02 00:00:00.000
SELECT CAST('2011-01-01 23:59:59.999' as datetime)

SQL Server中DateTime的精确度一直都是1 / 300s(3.33ms),所以任何不精确的值都会被舍入。

  • 997保持原样
  • 998将达到997
  • 999会凑到000
  • 为了获得更高的准确性,SQL Server 2008中提供了DateTime2数据类型,可以精确到小数点后7位。


    http://msdn.microsoft.com/en-us/library/ms187819.aspx上的datetime MSDN文档说

    时间范围== 00:00:00至23:59:59.997准确度==以0.000,0.003或.007秒为增量

    在链接的文档中还有一个“日期时间分数秒精度舍入”部分。

    datetime2给你更多的准确性。

    链接地址: http://www.djcxy.com/p/94399.html

    上一篇: SQL Server 2008 and milliseconds

    下一篇: Strange datetime behavior in SQL Server