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

时间:2013-07-04 10:28:19

标签: sql oracle

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

Name        dob        age
aaa     12-JUN-1985
bbb     15-MAY-1991
ccc     23-AUG-2000

目标表如下:

Name        dob        age
aaa     12-JUN-1985    28 
bbb     15-MAY-1991    22 
ccc     23-AUG-2000    13

4 个答案:

答案 0 :(得分:2)

update the_table
  set age = months_between(current_date, dob) / 12
where age is null;

答案 1 :(得分:2)

UPDATE table
   SET age =trunc(months_between(sysdate,dob)/12)
 WHERE age is null; 

答案 2 :(得分:0)

你能试试吗?

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

答案 3 :(得分:0)

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

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

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

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

Info on NVL function for substituting null values