月数
SELECT MONTHS_BETWEEN 
   (TO_DATE('02-02-1995','MM-DD-YYYY'),
    TO_DATE('01-01-1995','MM-DD-YYYY') ) "Months"
    FROM DUAL;天数
直接相减小时数
直接相减*24

解决方案 »

  1.   

    天:
    16:04:04 SQL> select sysdate-(sysdate-1000) from dual;SYSDATE-(SYSDATE-1000)
    ----------------------
                      1000已用时间:  00: 00: 00.47
    月:
    16:08:36 SQL> select months_between(sysdate,sysdate-1000) from dual;MONTHS_BETWEEN(SYSDATE,SYSDATE-1000)
    ------------------------------------
                              32.8387097已用时间:  00: 00: 00.16
    年:
    16:09:10 SQL> select to_char(sysdate,'yyyy')-to_char(sysdate-1000,'yyyy') from dual;TO_CHAR(SYSDATE,'YYYY')-TO_CHAR(SYSDATE-1000,'YYYY')
    ----------------------------------------------------
                                                       3已用时间:  00: 00: 00.1616:10:00 SQL> select (sysdate-(sysdate-1000))*24 from dual;(SYSDATE-(SYSDATE-1000))*24
    ---------------------------
                          24000已用时间:  00: 00: 00.15
    16:10:14 SQL>
      

  2.   

    关于年的相减,不知道是不是你想要的SELECT EXTRACT(YEAR FROM DATE '1998-03-07')- EXTRACT(YEAR FROM sysdate) from dualresult:-6