Sql 表示年龄在两岁之间 问题:
我如何在我的查询中表达以下语句Sql 表示年龄在两岁之间 问题:,sql,sql-server,Sql,Sql Server,我如何在我的查询中表达以下语句 Between 4 and 5 years old SQL查询 WHERE DATEDIFF(YEAR,AcquiredDate,GetDate())在此处检查SQL的BETWEEN运算符 在 使用datediff(year)时要非常小心。它计算两个日期之间的年边界数。因此,2014-12-31和2015-01-01之间的差异为1 此外,我建议将函数放在getdate()值上,而不是列上。这允许在列上仍然使用索引(“sargability”)。所以,像这样的东
Between 4 and 5 years old
SQL查询
WHERE DATEDIFF(YEAR,AcquiredDate,GetDate())在此处检查SQL的BETWEEN运算符
在
使用
datediff(year)
时要非常小心。它计算两个日期之间的年边界数。因此,2014-12-31和2015-01-01之间的差异为1
此外,我建议将函数放在getdate()
值上,而不是列上。这允许在列上仍然使用索引(“sargability”)。所以,像这样的东西应该满足你的要求:
where AcquiredDate >= dateadd(year, -5, GetDate()) and
AcquiredDate < dateadd(year , -3, GetDate())
其中AcquiredDate>=dateadd(年份-5,GetDate())和
AcquiredDate
在2015-01-01,这将检索2010-01-1和2011-12-31之间获取的行,这似乎是问题的目的。这是否类似于
其中DATEDIFF(YEAR,AcquiredDate,GetDate())介于4和5之间。
。您想知道此人的确切年龄吗?换句话说,你认为出生在2010~12岁的人是一个4岁还是3岁的孩子?“4岁到5岁之间”是相当暧昧的。你能编辑这个问题并举例说明符合和不符合这个条件的日期吗?我同意。使用datediff可能会导致数据不正确。
SELECT * FROM TABLE NAME WHERE DATEDIFF(YEAR, AcquiredDate, GetDate()) BETWEEN 4 and 5
SELECT *
FROM table
WHERE DATEDIFF(YEAR, AcquiredDate, GetDate()) BETWEEN 4 and 5
where AcquiredDate >= dateadd(year, -5, GetDate()) and
AcquiredDate < dateadd(year , -3, GetDate())