DATEADD MS -1什么都不做

时间:2015-08-12 18:55:58

标签: sql sql-server sql-server-2008

这是我的基本“测试”

select DATEADD(ms,-2,DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0))
        , DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
        ,case when DATEADD(ms,-2,DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)) != DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) then 'No Match' else 'Match' end 
union all 
select DATEADD(ms,-1,DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0))
       ,DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
       ,case when DATEADD(ms,-1,DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)) != DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) then 'No Match' else 'Match' end 

我试图理解为什么MS -2,减去3和MS -1减去没有。

1 个答案:

答案 0 :(得分:13)

MSSQL的datetime数据类型具有最佳粒度.00333333(重复),或大约3毫秒。小于此值的变化将导致无变化或舍入为3。

来自https://msdn.microsoft.com/en-us/library/cc280460.aspx

  

datetime2(3)的精度为1毫秒,而datetime的精度为1毫秒   精度为1/300秒。