months_between(date1,date2)是月份
以上值除以12,再用TRUNC取值应为年份

解决方案 »

  1.   

    相差天数
    SQL> select trunc(sysdate,'mm')-to_date('10/02','mm/yy') from dual;TRUNC(SYSDATE,'MM')-TO_DATE('10/02','MM/YY')
    --------------------------------------------
                                              31相差月数
    SQL> select months_between(trunc(sysdate,'mm'),to_date('10/02','mm/yy')) from dual;MONTHS_BETWEEN(TRUNC(SYSDATE,'MM'),TO_DATE('10/02','MM/YY'))
    ------------------------------------------------------------
                                                               1
      

  2.   

    求年 select trunc(months_between(trunc(sysdate,'mm'),to_date('10/00','mm/yy'))/12 )from dual
      

  3.   

    year(d1)-year(d2)
    其中d1 d2是date型的
    month(d1)-month(d1)
      

  4.   

    gks_cn(深情的狼) :
    sqlserver 中吧?
      

  5.   

    相差年数:SQL> select trunc((months_between(trunc(sysdate,'mm'),to_date('10/02','mm/yy')))/12) from dual;TRUNC((MONTHS_BETWEEN(TRUNC(SYSDATE,'MM'),TO_DATE('10/02','MM/YY')))/12)
    ------------------------------------------------------------------------
                                                                           0
      

  6.   

    注意如果MONTHS_BETWEEN(DATD1,DATE2)--DATE1和DATE2的日分量不同那会产生分数如下例:SQL> select months_between(trunc(sysdate,'dd'),to_date('01/10/02','dd/mm/yy')) from dual;MONTHS_BETWEEN(TRUNC(SYSDATE,'DD'),TO_DATE('01/10/02','DD/MM/YY'))
    ------------------------------------------------------------------
                                                            1.67741935应改为:SQL> select trunc(months_between(trunc(sysdate,'dd'),to_date('01/10/02','dd/mm/yy'))) from dual;TRUNC(MONTHS_BETWEEN(TRUNC(SYSDATE,'DD'),TO_DATE('01/10/02','DD/MM/YY')))
    -------------------------------------------------------------------------
                                                                            1
      

  7.   

    i agree with us
    help you that it is a happy thing