DATEADD MS -1什么都不做

Hol*_* IV 7 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 
Run Code Online (Sandbox Code Playgroud)

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

Lyn*_*ing 12

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

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

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