如果年龄列基于oracle中的出生日期列为空,如何更新年龄列?

Posted

技术标签:

【中文标题】如果年龄列基于oracle中的出生日期列为空,如何更新年龄列?【英文标题】:How to update the age column if age column is null based on date of birth column in oracle? 【发布时间】:2013-07-04 10:28:19 【问题描述】:

如果根据oracle中的出生日期列年龄列为空,如何更新年龄列? 表 t1:(源表)

姓名出生年龄 1985 年 6 月 12 日 bbb 1991 年 5 月 15 日 ccc 2000 年 8 月 23 日

这样的目标表:

姓名出生年龄 1985 年 6 月 12 日 28 bbb 1991 年 5 月 15 日 22 ccc 2000 年 8 月 23 日 13

【问题讨论】:

如果您输入出生日期,那么您是否需要明确输入年龄。? 明年你要增加所有年龄记录吗?更好地创建一个计算字段,根据出生日期和当前日期返回年龄 我和我的朋友在这里 - 你需要创建一个视图。 Calculating age from birthday with oracle plsql trigger and insert the age in table的可能重复 其实也有需要计算AGE的情况。关键是 AGE 是该人在创建记录时或记录所代表的事件发生时的年龄,而不是他们现在的年龄。您不希望即时计算年龄来满足“40 岁以下心脏病发作的每个人”的查询。 【参考方案1】:
update the_table
  set age = months_between(current_date, dob) / 12
where age is null;

【讨论】:

【参考方案2】:
UPDATE table
   SET age =trunc(months_between(sysdate,dob)/12)
 WHERE age is null; 

【讨论】:

【参考方案3】:

你可以试试这个吗?

UPDATE <your table> SET age = NVL(age, MONTHS_BETWEEN(sysdate,dob)/12)

【讨论】:

【参考方案4】:

我绝对赞成这应该是一个基于出生日期的计算字段,因为您必须不断更新它。

如果你需要这样做,我建议:

UPDATE [YOUR TABLE]
SET age = NVL(age, 24 * (sysdate - dob)/8766)

这将通过使用小时来考虑闰年:8766/24 = 365.25

Info on NVL function for substituting null values

【讨论】:

以上是关于如果年龄列基于oracle中的出生日期列为空,如何更新年龄列?的主要内容,如果未能解决你的问题,请参考以下文章

oracle根据出生日期算年龄

oracle根据出生日期算年龄

熊猫从日期获取年龄(例如:出生日期)

Oracle 根据出生日期计算年龄

EXECL如何通过出生日期自动提取年龄????

SQL语句如何根据出生日期计算年龄