日期:2014-05-17  浏览次数:20894 次

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

------解决方案--------------------

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

------解决方案--------------------
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
------解决方案--------------------
按月份计算月份差 


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