本帖最后由 huang_w 于 2010-08-06 09:24:52 编辑

解决方案 »

  1.   

    with temp as(
    select to_date('2006-05-01','yyyy-mm-dd') time2,to_date('2009-06-08','yyyy-mm-dd') time1 from dual
    union all
    select to_date('2008-12-01','yyyy-mm-dd') time2,to_date('2010-02-10','yyyy-mm-dd') time1 from dual
    )
    select case when to_number(to_char(time1,'MM')) - to_number(to_char(time2,'MM')) >= 0 
    then to_number(to_char(time1,'MM')) - to_number(to_char(time2,'MM'))
    else to_number(to_char(time1,'MM'))+12 - to_number(to_char(time2,'MM')) + 1
    end 相差月数
     from temp
      

  2.   

    months_betweenB为2008-12-01 A为2010-02-10
    月份之差结果:3
    ???
      

  3.   

    select trunc(to_date('2010-02-10','yyyy-MM-dd'),'mm') - trunc(to_date('2008-12-01','yyyy-MM-dd'),'mm') from dual;