各位大神:Oracle 如何计算年龄,年龄的格式是:X岁X月X天
如2013年1月1日出生,计算的年龄是:1岁6月19天
求科普!
------解决方案--------------------
楼主这个涉及到每年不同天数,每月不同日数,相减。不是简单的日期相减:
select ceil(sysdate - to_date('2013-01-01','yyyy-mm-dd')) days from dual
此处给个思路:
可以写一个Function
1、取得传入生日到当年结束的天数,可以用下年开始第一天减去生日
2、获取其他年相应天数,年份
------解决方案--------------------
这个确实有点难度,因为牵涉到闰年和每个月的天数不一样
------解决方案--------------------
select trunc(months / 12)
------解决方案--------------------
'岁'
------解决方案--------------------
trunc(mod(months, 12))
------解决方案--------------------
'月'
------解决方案--------------------
trunc(sysdate - add_months(birth, trunc(months)))
------解决方案--------------------
'天' age
from (select months_between(sysdate, birth) months, birth
from (select date '2013-1-1' birth from dual));
事实证明,你的计算结果是错的
