Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 表示年龄在两岁之间 问题:_Sql_Sql Server - Fatal编程技术网

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())