我的目标是在当前日期之前3年内找到任何HireDate,但我对语法感到困惑。这是问题所在
IF DATEDIFF(year,HireDate,GETDATE) > 3
答案 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