我如何在查询中表达以下语句?
Between 4 and 5 years old
WHERE DATEDIFF(YEAR, AcquiredDate, GetDate()) <=2
获取从今天起超过一年的所有资产
获取4到5岁之间的所有资产
答案 0 :(得分:4)
使用datediff(year)
时要非常小心。它计算两个日期之间的年份边界数。因此,2014-12-31和2015-01-01之间的差异为1。
此外,我建议将函数放在getdate()
值而不是列上。这允许仍然在列上使用索引(“sargability”)。所以,这样的事情应该做你想做的事情:
where AcquiredDate >= dateadd(year, -5, GetDate()) and
AcquiredDate < dateadd(year , -3, GetDate())
在2015-01-01,这将检索在2010-01-1和2011-12-31之间获得的行,这似乎是问题的目的。
答案 1 :(得分:3)
在这里检查SQL BETWEEN OPERATOR SQL Between
SELECT * FROM TABLE NAME WHERE DATEDIFF(YEAR, AcquiredDate, GetDate()) BETWEEN 4 and 5
答案 2 :(得分:0)
使用BETWEEN
http://www.w3schools.com/sql/sql_between.asp
SELECT *
FROM table
WHERE DATEDIFF(YEAR, AcquiredDate, GetDate()) BETWEEN 4 and 5