小编典典

在SQL查询中获取年龄

sql

您好,我的任务是在大型SQL Server 2000数据库上进行一些查询。

我遇到的查询是“查找20至40岁之间的人数”

我该怎么做?我先前的查询是为了统计每个人的情况,如下所示:

select count(rid) from people where ...

(与…是无关紧要的条件)。我已经在Google上进行了搜索,但是我发现用于计算年龄的唯一内容是如此之大,以至于我看不到如何将其嵌入查询中,或者它是我没有创建权限的存储过程。

有人可以帮我弄这个吗?

人员表的相关部分如下所示:

RID(unique key) | dateofbirth(datetime) | firstname....

阅读 166

收藏
2021-04-22

共1个答案

小编典典

假设生日存储为DateTime

Select Count(*)
From    (
        Select Id, Floor(DateDiff(d, BirthDate, GetDate()) / 365.25) As Age
        From People
        ) As EmpAges
Where EmpAges Between 20 And 40

也可以在没有派生表的情况下这样编写:

Select Count(*)
From People
Where Floor(DateDiff(d, BirthDate, GetDate()) / 365.25)  Between 20 And 40

还有一种方法是使用DateAdd。正如OMG Ponies和ck所提到的,这将是最有效的方法,因为它可以使用dateOfBirth上的索引(如果存在的话)。

Select Count(*)
From People
Where DateOfBirth Between DateAdd(yy, -40, GetDate()) And DateAdd(yy, -20, GetDate())
2021-04-22