请问,我只想比较月和日,而不比较年,该如何实现?类型为datetime
比如2007年10月10日与2003年7月10日
应该返回3(返回为月的个数,如果为非整数月则返回小数,比如 2.XXX月)

解决方案 »

  1.   

    可是month_between 计算年间的月份啊,这样月份就会大于12阿
      

  2.   

    select months_between(sysdate,to_date('20071222','YYYYMMDD')) from dual;
    结果为-2;
    select months_between(sysdate,to_date('20071221','YYYYMMDD')) from dual;
    结果为-1.94395870669056;
      

  3.   

    select to_number(to_char(待比较的日期型数据1,'dd'))/31+to_number(to_char(待比较的日期型数据2,'mm')) 月份差 from 表明
    这里我把一个月当作31天来计算了希望对楼主有所帮助
      

  4.   

    刚才给搞错了,重新修改了下,
    select (to_number(to_char(待比较的日期型数据1, 'dd '))-to_number(to_char(待比较的日期型数据2, 'dd')) )/31+(to_number(to_char(待比较的日期型数据1, 'mm'))-to_number(to_char(待比较的日期型数据2, 'mm')) ) 月份差 from 表名
      

  5.   

    比如两个时间:  20091012和20071011
    select mod(abs(months_between(to_date('20081012','yyyymmdd'),to_date('20071011','yyyymmdd'))),12) from dual;
    MOD(ABS(MONTHS_BETWEEN(TO_DATE
    ------------------------------
                 0.032258064516129