请问下怎样查询出指定两个月份间的所有月份, 
例如 给定 2008年3月到2008年8月, 
我想得到这样一列,请问用一条查询sql写出来, 月份 





8 然后想与一个数据表做全关联,不管3到8月有没有数据都作为一行查询出来,

解决方案 »

  1.   

    select to_char(add_months(to_date('2008-03-01','yyyy-mm-dd'),rownum),'yyyy-mm') as ymonth
    from dual
    connect by rownum<=months_between(to_date('2008-08-01','yyyy-mm-dd'),to_date('2008-03-01','yyyy-mm-dd'))
      

  2.   


    select extract(month from mo) from (select rownum ,add_months(to_date(20080301,'YYYYMMdd'),rownum)mo from dual connect by rownum<10);我也是最经刚学oracle,希望能对你有帮助!
      

  3.   

    select 1 as m from dual
    union all
    select 2 from dual
    union all
    select 3 from dual
    union all
    select 4 from dual
    union all
    select 5 from dual
    union all
    select 6 from dual
    union all
    select 7 from dual
    union all
    select 8 from dual
    union all
    select 9 from dual
    union all
    select 10 from dual
    union all
    select 11 from dual
    union all
    select 12 from dual;
      

  4.   

    SELECT TO_NUMBER(TO_CHAR(TO_DATE('2008-03', 'yyyy-mm'), 'MM')) + ROWNUM - 1 MONTH
      FROM DUAL
    CONNECT BY ROWNUM <=
               MONTHS_BETWEEN(TO_DATE('2008-08', 'yyyy-mm'),
                              TO_DATE('2008-03', 'yyyy-mm')) + 1输出:
    MONTH
    3
    4
    5
    6
    7
    8
      

  5.   

    要看一下你的oracle版本了,如果是10g的用以上sql就是正确的,如果是9i的则应该写成:
    SELECT   TO_NUMBER (TO_CHAR (TO_DATE ('2008-03', 'yyyy-mm'), 'MM'))
           + ROWNUM
           - 1 "Month"
      FROM all_objects
     WHERE ROWNUM <=
                MONTHS_BETWEEN (TO_DATE ('2008-08', 'yyyy-mm'),
                                TO_DATE ('2008-03', 'yyyy-mm')
                               )
              + 1