在oracle中,求的人当前的年龄?表(DateTime 出生年龄)

解决方案 »

  1.   


    SELECT TRUNC((SYSDATE - DateTime)/365,0)
    FROM   YOURTABLE;
      

  2.   

    --實際年齡(幾歲幾天): select decode(
                  sign(dif_days),
                  1 ,to_char(sysdate,'yyyy')-to_char(datetime,'yyyy')  , --當前日期大於生日-1天
                  -1,to_char(sysdate,'yyyy')-to_char(datetime,'yyyy')-1, --當前日期小於生日-1天
                  0 ,to_char(sysdate,'yyyy')-to_char(datetime,'yyyy')    --當前日期等於生日-1天
                 ) year,      --幾歲
           abs(dif_days) days --幾天 
      from (
            select date_time,
                   trunc(sysdate)-to_date(to_char(sysdate,'yyyy')||to_char(datetime,'mmdd'),'yyyymmdd')+1 dif_days
              from your_table
           )--虛年齡(幾歲):  select to_char(sysdate,'yyyy')-to_char(datetime,'yyyy')+1 v_age 
      from your_table 
      

  3.   

    沒有考慮潤年的問題呀
    假如當前日期是2008年12月31日
            生日是2008年1月1日就有差異
    例如:SQL> select TRUNC((to_date('20081231','yyyymmdd')- to_date('20080101','yyyymmdd'))/365,0) from dual;TRUNC((TO_DATE('20081231','YYY
    ------------------------------
                                 1SQL> select TRUNC((to_date('20071231','yyyymmdd')- to_date('20070101','yyyymmdd'))/365,0) from dual;TRUNC((TO_DATE('20071231','YYY
    ------------------------------
                                 0