求教,我想要得到一个日期范围内月份的结果集,比如2012-11-2到2013-3-12,我想得到的一列数据结果集是:
----------------------------------------
2012-11
2012-12
2013-01
2012-02
2013-03oracle

解决方案 »

  1.   


    SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2012-11-02','YYYY-MM-DD'),ROWNUM-1),'YYYY-MM-DD') FROM DUAL CONNECT BY ROWNUM<=5
      

  2.   

    SELECT TO_CHAR(ADD_MONTHS(TO_DATE(SUBSTR('2012-11-2',1,7), 'YYYY-MM'), ROWNUM - 1),'YYYY-MM') AS MONTH2 FROM DUAL CONNECT BY ROWNUM <= (SELECT MONTHS_BETWEEN(TO_DATE(SUBSTR('2013-3-12',1,7), 'YYYY-MM'),TO_DATE(SUBSTR('2012-11-2',1,7), 'YYYY-MM'))FROM DUAL)+1
      

  3.   

    SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2012-11-2', 'YYYY-MM-DD'), ROWNUM -1),'YYYY-MM') AS MONTH
     FROM DUAL CONNECT BY 
     ROWNUM <= (SELECT MONTHS_BETWEEN(TO_DATE('2013-3-12', 'YYYY-MM-DD'),TO_DATE('2012-11-2', 'YYYY-MM-DD'))FROM DUAL)+1
      

  4.   

     再次学习到connect by的用法、
      

  5.   

    按月份计算月份差 
    select to_char(add_months(date'2012-11-02',level-1),'yyyy-mm') t1
    from dual
    connect by level < months_between(to_date(substr('2013-03-12',1,7),'yyyy-mm')
            ,to_date(substr('2012-11-02',1,7),'yyyy-mm'))+2
         T1
    ----------------------
    1 2012-11
    2 2012-12
    3 2013-01
    4 2013-02
    5 2013-03