select to_number(to_char(to_date('2003-08-31','yyyy-mm-dd'),'mm'))-to_number(to_char(to_date('2003-07-01','yyyy-mm-dd'),'mm')) from dual;

解决方案 »

  1.   

    上面这样写好像不对啊 如果相差超过一年就有问题了:)
    假设date1是日期1 date2是日期2
    select (to_number(to_char(date1,'yyyy'))-to_number(to_char(date2,'yyyy')))*12+
    (to_number(to_char(date1,'mm'))-to_number(to_char(date2,'mm'))) from dual;
      

  2.   

    select MONTHS_BETWEEN(trunc(date1,'MM'),trunc(date2,'MM')) from dual;
      

  3.   

    select MONTHS_BETWEEN(trunc(to_date('20050101','YYYYMMDD'),'MM'),trunc(to_date('20030201','YYYYMMDD'),'MM')) from dual
      

  4.   

    select trunc(months_between(sysdate,to_date('20020405','yyyymmdd'))) from dual;