gpt4 book ai didi

sql - 如何在查询时使用 datediff 函数查找年龄范围?

转载 作者:行者123 更新时间:2023-12-04 21:49:16 28 4
gpt4 key购买 nike

我有一个表 A,其中包含出生日期(dd-mm-yy 格式)列 DOB,假设还有另一个表 B,其中包含我想要加入的数据。考虑到 18 到 25 岁等特定年龄段,我该如何加入?

这是我写的,但它不起作用:

select * from B
inner join (select * from A
where datediff(year, DOB, year(getdate())) between 18 and 25) A
on B.id = A.id

最佳答案

您不应为此目的使用 datediff()。相反:

where dob >= dateadd(year, -25, getdate()) and
dob <= dateadd(year, -18, getdate())

有两个重要的原因。首先,在 dob 上使用函数会阻止使用索引和其他优化。这可能会导致劣质查询计划。

其次,datediff() 测量年份界限。所以,它实际上是返回 18 到 25 年前出生在日历年(从 1 月 1 日到 12 月 31 日)的人。通常,您对用于此目的的日历不感兴趣。

关于sql - 如何在查询时使用 datediff 函数查找年龄范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708630/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com