请问下怎样查询出指定两个月份间的所有月份,
例如 给定 2008年3月到2008年8月,
我想得到这样一列,请问用一条查询sql写出来,月份
3
4
5
6
7
8然后想与一个数据表做全关联,不管3到8月有没有数据都作为一行查询出来,

解决方案 »

  1.   

    SELECT SUBSTR(TO_CHAR(DATE,'MM'),2,1) FROM TABLE WHERE TO_CHAR(DATE,'YYYYMMDD') BEWTEEN '200803' AND '200808'
      

  2.   

    SELECT DISTINCT TO_CHAR (u_date, 'mm')
               FROM u_table
              WHERE TO_CHAR (u_date, 'yyyymm') BETWEEN '200803' AND '200808'; 
      

  3.   

    时间函数很多,足够满足要求的了,多看看Oracle给的时间函数就可以了
      

  4.   

    select to_char(add_months(to_date('2007-01-01','yyyy-mm-dd'),rownum),'yyyy-mm') as ymonth
    from dual
    connect by rownum<=months_between(to_date('2009-09-01','yyyy-mm-dd'),to_date('2007-07-01','yyyy-mm-dd'))
    /
    楼主想要的是这样的结果吧
      

  5.   

    6楼的想法是对的,但少了一条数据
    应该是这样select to_char(add_months(to_date('2008-03-01', 'yyyy-mm-dd'), rownum-1),
                   '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'))+1
      

  6.   


    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;
      

  7.   

    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;
      

  8.   

    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
      

  9.   

    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-01', 'yyyy-mm-dd'),
                              to_date('2008-03-01', 'yyyy-mm-dd'))+1
      

  10.   

    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
      

  11.   

    select to_char(add_months(to_date('2007-01-01','yyyy-mm-dd'),rownum),'yyyy-mm') as ymonth 
    from dual 
    connect by rownum <=months_between(to_date('2009-09-01','yyyy-mm-dd'),to_date('2007-07-01','yyyy-mm-dd')) 

    楼主想要的是这样的结果吧