我的目标是找到比当前日期早 3 年以上的任何 HireDate,但我对语法感到困惑。问题来了
IF DATEDIFF(year,HireDate,GETDATE) > 3
最佳答案
不要使用 DATEDIFF()
!使用 DATEADD()
:
where HireDate < dateadd(year, -3, GETDATE())
DATEDIFF()
并不像您认为的那样。它计算两个日期之间的年份界限数。因此,20015 年 1 月 1 日和 2016 年 12 月 31 日之间相差 1 年。
此外,对于 DATEDIFF()
,列是函数的参数。这会阻止 SQL Server 在该列上使用索引。这不是 DATEADD()
的问题,因为参数是 GETDATE()
,而不是表中的列。
关于sql - 将 GETDATE 与 DATEDIFF 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998147/