sql-server-2008 - SQL Server 2008 和毫秒

标签 sql-server-2008 datetime milliseconds

在 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/300 秒(3.33 毫秒),因此任何不能精确划分的值都会被四舍五入。

  • 997 保持原样
  • 998 将四舍五入为 997
  • 999 将四舍五入到 000

  • 为了获得更高的准确性,SQL Server 2008 中提供了 DateTime2 数据类型,可以精确到小数点后 7 位。

    关于sql-server-2008 - SQL Server 2008 和毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153963/

    相关文章:

    sql-server - SQL Server 2008 存储过程不从动态查询返回输出

    python - Pandas :两个 datetime64 对象的差异产生 NaT 而不是正确的 timedelta 值

    ruby - ruby 中是否有针对 ISO 8601 的综合库/模块?

    python - 我如何抵消 Pandas dayofyear 以便开始日期是 10 月 1 日而不是 1 月 1 日?

    java - 使用线程搞乱了我的暂停系统

    Java:要 float 的毫秒时间戳字符串

    javascript - setHours() javascript 返回与预期不同的格式

    sql-server - 按 FK 引用文献的顺序对表格进行排序?

    c# - ASP.NET 中的布局问题 GridView

    sql - SQL中两个表之间调整 View 的正确方法是什么