我的目标是在当前日期之前找到任何超过3年的HireDate,但我对语法感到困惑.这是问题所在
IF DATEDIFF(year,HireDate,GETDATE) > 3
Run Code Online (Sandbox Code Playgroud)
不要用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()不是表中的列.
| 归档时间: |
|
| 查看次数: |
9405 次 |
| 最近记录: |