2

如果年龄列基于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
4

4 回答 4

2
UPDATE table
   SET age =trunc(months_between(sysdate,dob)/12)
 WHERE age is null; 
于 2013-07-04T10:35:14.753 回答
2
update the_table
  set age = months_between(current_date, dob) / 12
where age is null;
于 2013-07-04T10:32:23.510 回答
0

我肯定在这应该是一个基于出生日期的计算字段,因为你必须不断更新它。

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

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

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

用于替换空值的 NVL 函数的信息

于 2013-07-04T11:58:29.123 回答
0

你能试试这个吗?

UPDATE <your table> SET age = NVL(age, MONTHS_BETWEEN(sysdate,dob)/12)
于 2013-07-04T10:33:45.587 回答