select months_between(日期一,日期二) from dual;
如果日期一比日期二晚,则返回负值
该返回值有小数,如果楼主不要小数,则可以再做相关处理
如:
select months_between(sysdate,to_date('01-01-2003','dd-mm-yyyy')) from dual;

解决方案 »

  1.   

    select abs(mod(to_number(to_char(date1,'mm'))-to_number(to_char(date1,'mm')),12) from dual;try it !!;)
      

  2.   

    使用函数 Months_between(d1,d2)SELECT MONTHS_BETWEEN('2002-11-12',SYSDATE)  AS DT FROM DUAL
      

  3.   

    Example
    SELECT MONTHS_BETWEEN
    (TO_DATE(’02-02-1995’,’MM-DD-YYYY’),
    TO_DATE(’01-01-1995’,’MM-DD-YYYY’) ) "Months"
    FROM DUAL;Months
    ----------
    1.03225806
      

  4.   

    months_between(date1,date2),计算date1,date2之间的月的数目的函数。
    SQL> select months_between(to_date('22-10-2003','dd-mm-yyyy'),
      2  to_date('01-10-2003','dd-mm-yyyy')) "1STdate",
      3  months_between(to_date('01-01-2003','dd-mm-yyyy'),
      4  to_date('22-10-2003','dd-mm-yyyy')) "2NDdate" 
      5  from dual;   1STdate    2NDdate
    ---------- ----------
    .677419355 -9.6774194$:"date1-date2"
      

  5.   

    没有那么复杂:
    select abs(to_char(date1,'mm')-to_char(date1,'mm')) from dual;
    就可以了。字符型与数值型打出来都一样。
      

  6.   

    lcz022(阿五) :应该好好测试测试 。
      

  7.   

    lcz022(阿五)和hdkkk(diablo2) 的有问题非常感谢各位的指点,又学了一招,谢谢 months_between之类的函数还有哪些的?
      

  8.   

    last_day:本月最后一天
    add_month(d,n)当前日期d后退n个月
    next_day(d,day)d后第一周制定day的日期,找一本参考书吧