RT,我想得到两个日期之间的月数:就像两个日期之间的天数一样  select   abs(trunc(to_date( '20100401 ', 'yyyymmdd ')-to_date( '20100410 ', 'yyyymmdd ')))  from   dual 
比如:两个日期间的月数小于2, 请高人指点。在线等

解决方案 »

  1.   

    select   abs(to_number(to_char(to_date( '20100401 ', 'yyyymmdd '),'yyyymm'))
    -to_number(to_char(to_date( '20100410 ', 'yyyymmdd '),'yyyymm')))  from   dual
      

  2.   

    select MONTHS_BETWEEN(to_date('20100501235959','yyyymmddhh24miss'),to_date('20100201235959','yyyymmddhh24miss')) from dual;
      

  3.   

    select months_between(to_date('2010-06-05','yyyy-mm-dd'),to_date('2010-06-05','yyyy-mm-dd')) from dual
    大的日期在前面
      

  4.   

    select abs(trunc(months_between(to_date('2010-04-01','yyyy-mm-dd'),to_date('2010-04-10','yyyy-mm-dd')))) from dual;
      

  5.   

    months_between(date1,date2)   
          如果两个日期中“日”相同,或分别是所在月的最后一天,那么返回的结果是整数。否则,返回的结果将包含一个分数部分(以31天为一月计算)     
          select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
          显示: 1      
          select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
          显示: 1.03225806451613    
          select abs(trunc(months_between(sysdate , to_date('20011231','yyyymmdd'))))from dual;
          select ceil(trunc(months_between(sysdate , to_date('20011231','yyyymmdd'))))from dual;
          select floor(trunc(months_between(sysdate , to_date('20011231','yyyymmdd'))))from dual;