解决方案 »

  1.   

    楼主这个涉及到每年不同天数,每月不同日数,相减。不是简单的日期相减:
    select ceil(sysdate - to_date('2013-01-01','yyyy-mm-dd')) days from dual
    此处给个思路:
    可以写一个Function
    1、取得传入生日到当年结束的天数,可以用下年开始第一天减去生日
    2、获取其他年相应天数,年份
      

  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));事实证明,你的计算结果是错的