使用带有DATEDIFF的GETDATE?

Ger*_* Mc 2 sql sql-server

我的目标是在当前日期之前找到任何超过3年的HireDate,但我对语法感到困惑.这是问题所在

 IF DATEDIFF(year,HireDate,GETDATE) > 3
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 7

不要用DATEDIFF()!用途DATEADD():

where HireDate < dateadd(year, -3, GETDATE())
Run Code Online (Sandbox Code Playgroud)

DATEDIFF()不会做你认为它做的事情.它计算两个日期之间的年份边界数.因此,20015年1月1日至2016年12月31日之间的差异为1年.

另外,DATEDIFF()列是函数的参数.这可以防止SQL Server在列上使用索引.这不是问题,DATEADD()因为参数GETDATE()不是表中的列.