表达两年之间的年龄

时间:2014-12-04 11:50:56

标签: sql sql-server

问题

我如何在查询中表达以下语句?

Between 4 and 5 years old

SQL查询

WHERE DATEDIFF(YEAR, AcquiredDate, GetDate()) <=2

获取从今天起超过一年的所有资产

我想说什么?

获取4到5岁之间的所有资产


3 个答案:

答案 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