sql - 将 GETDATE 与 DATEDIFF 一起使用?

标签 sql sql-server

我的目标是找到比当前日期早 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/

相关文章:

SQL Server 查询添加具有默认值的列

sql - Sproc 性能会随着时间的推移而降低

SQL 服务器 2014 : report text of query executed via shortcut in query window

sql-server - 在将 python 3.5 与 pandas 和 sqlalchemy 一起使用时,尝试从 csv 文件在 SQL Server 2016 中创建新数据库表时出错

SQL计算2列的百分比

SQL Server 动态查询

php - 查找不止一次存在的数字

javascript - 从查询sql数据库获取数据到javascript

mysql - SQL 查询以匹配具有/不具有所有定义的多对多匹配项的记录

sql - 如何同时向数据库中的两个表插入数据?