当前位置: 代码迷 >> Oracle管理 >> Oracle 怎么计算年龄,年龄的格式是:X岁X月X天 如2013年1月1日出生,计算的年龄是:1岁6月19天
  详细解决方案

Oracle 怎么计算年龄,年龄的格式是:X岁X月X天 如2013年1月1日出生,计算的年龄是:1岁6月19天

热度:63   发布时间:2016-04-24 04:19:05.0
Oracle 如何计算年龄,年龄的格式是:X岁X月X天 如2013年1月1日出生,计算的年龄是:1岁6月19天
各位大神: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 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));


事实证明,你的计算结果是错的
  相关解决方案