【问题标题】:SQL: calculate a person's age on a certain date, based on date of birth [duplicate]SQL:根据出生日期计算一个人在某个日期的年龄[重复]
【发布时间】:2018-10-17 16:13:23
【问题描述】:

我有一份在 2017 年访问过某个地点的人的列表。目标是将列表缩小到仅在访问时处于特定年龄范围内的人。查询很简单:

SELECT DISTINCT
    VisitID
    ,VisitDate
    ,PersonID
    ,Age
    ,DateOfBirth

FROM Visit v JOIN Demographics d ON v.PersonID = d.PersonID

WHERE VisitDate BETWEEN '01/01/2017' AND '12/31/2017'
AND Age BETWEEN 45 AND 75

问题在于,这个查询的编写方式会吸引当前在该年龄范围内的患者,并且可能不一定在 2017 年。

我想做的是添加一行代码,通过比较VisitDateDateOfBirth 字段来计算该人访问时的年龄。当我没有可用的年龄字段时,我之前编写过代码来根据 DOB 计算某人的年龄,但这是另一种情况。到目前为止,我发现的所有教程或示例代码都没有出现在正确的上下文中。我该怎么做呢?

【问题讨论】:

  • 访问日期 - 生日日期。
  • 如果你可以根据出生日期来计算一个人的年龄,那么在这种“不同的情况”下,你所要做的就是将GETDATE()替换为VisitDate

标签: sql sql-server


【解决方案1】:

-- 这应该可以满足您多年的需求:

SELECT DATEDIFF(YEAR, DateofBirth, DateOfVisit) AS AgeWhenVisit

【讨论】:

  • 不,不会的。这将返回 DateOfBirth 和 DateOfVisit 之间经过的 1 月 1 日的数量。
猜你喜欢
  • 2019-08-12
  • 2013-10-31
  • 1970-01-01
  • 2014-04-04
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多