【问题标题】:How to update the age column if age column is null based on date of birth column in oracle?如果年龄列基于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

【问题讨论】:

  • 如果您输入出生日期,那么您是否需要明确输入年龄。?
  • 明年你要增加所有年龄记录吗?更好地创建一个计算字段,根据出生日期和当前日期返回年龄
  • 我和我的朋友在这里 - 你需要创建一个视图。
  • 其实也有需要计算AGE的情况。关键是 AGE 是该人在创建记录时或记录所代表的事件发生时的年龄,而不是他们现在的年龄。您不希望即时计算年龄来满足“40 岁以下心脏病发作的每个人”的查询。

标签: sql oracle


【解决方案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

        【讨论】:

          猜你喜欢
          • 2015-01-21
          • 1970-01-01
          • 2017-02-14
          • 2012-03-09
          • 1970-01-01
          • 2022-12-03
          • 1970-01-01
          • 2020-06-01
          相关资源
          最近更新 更多