根据多个字段计算年龄

Calculate age based on multiple fields

我有一个 table,其中包含出生日期列、死亡日期列和数据集提取日期。

我想用一个新的 'Age' 列来计算每个人的年龄,可以是他们的死亡日期,也可以是他们在提取日期的年龄——而不是当前日期。我现在不太明白。

示例数据:

当前table

person_id birth_datetimetime death_datetime extract_date
1234 1980-04-01T00:00:00 null 2021-12-31
8765 1925-05-04T00:00:00 2018-05-T00:00:00 2021-12-31
9102 1974-05-17T00:00:00 2021-01-31T00:00:00 2021-12-31
5678 2019-09-01T00:00:00 null 2021-12-31
3456 1947-04-01T00:00:00 2016-06-14T00:00:00 2021-12-31

期望输出

person_id birth_datetimetime death_datetime extract_date Age
1234 1980-04-01T00:00:00 null 2021-12-31 41
8765 1925-05-04T00:00:00 2018-05-T00:00:00 2021-12-31 93
9102 1974-05-17T00:00:00 2021-01-31T00:00:00 2021-12-31 47
5678 2019-09-01T00:00:00 null 2021-12-31 2
3456 1947-04-01T00:00:00 2016-06-14T00:00:00 2021-12-31 69

考虑以下方法

select *, 
  date_diff(ifnull(death_datetime, extract_date), date(birth_datetimetime), year) as age
from your_table              

如果应用于您问题中的示例数据 - 输出为