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
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
月份之差结果:3
???