使用带有DATEDIFF的GETDATE?

时间:2017-03-24 11:17:31

标签: sql sql-server

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

 IF DATEDIFF(year,HireDate,GETDATE) > 3

4 个答案:

答案 0 :(得分:7)

不要使用DATEDIFF()!使用DATEADD()

where HireDate < dateadd(year, -3, GETDATE())

DATEDIFF()没有按照您的想法行事。它计算两个日期之间的年份边界数。因此,20015年1月1日至2016年12月31日之间的差异为1年。

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

答案 1 :(得分:4)

if DATEADD(year,3,HireDate)<GETDATE()

答案 2 :(得分:1)

尝试:

SELECT HireDate from table_name
WHERE DATEDIFF(Year, HireDate, GETDATE()) > 3

答案 3 :(得分:1)

尝试使用此查询来解决您的问题。

从TableName中选择Hiredate 约会年份(年份,Hiredate,getdate())&gt; = 3