如果年龄列基于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中的出生日期列为空,如何更新年龄列?的主要内容,如果未能解决你的问题,请参考以下文章