出生日期存在oracle中的一个表如person中的字段birthdt中,记法如19820324,
如何根据19820324来得到这个人的年龄?
select idno,? age
from person
?要具体怎么写的

解决方案 »

  1.   

    假设你这个字段是字符型,
    SQL> select to_number(to_char(sysdate,'yyyy'))-to_number(substr('19820324',1,4)) age
      2  from dual;       AGE
    ----------
            25
      

  2.   

    select Months_between(trunc(sysdate,'yyyy'),trunc(to_date('19820324','yyyymmdd'),'yyyy'))/12 from dual;
      

  3.   

    select   Months_between(trunc(sysdate, 'yyyy '),trunc(to_date( '19820324 ', 'yyyymmdd '), 'yyyy '))/12   from   dual;
    这句运行有问题
    而且19820324只是例子,它是表中的字段
      

  4.   

    恩,忘了看月份。
    SQL> select trunc(Months_between(sysdate,to_date('19820324','yyyymmdd'))/12) from dual;TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE('19820324','YYYYMMDD'))/12)
    ----------------------------------------------------------------
                                                                  25
    SQL> select trunc(Months_between(sysdate,to_date('19821124','yyyymmdd'))/12) from dual;TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE('19821124','YYYYMMDD'))/12)
    ----------------------------------------------------------------
                                                                  24
      

  5.   

    具体表就用:
    select   trunc(Months_between(sysdate,to_date( 生日字段, 'yyyymmdd '))/12)   from   T;
      

  6.   

    select floor(months_between(sysdate,出生日期)/12) from dual;