查询某一段日期,如传入参数2009-10-23和2009-11-02,则显示下面效果序号   日期
1     2009-10-23
2     2009-10-24
3     2009-10-25
4     2009-10-26
5     2009-10-27
6     2009-10-28
7     2009-10-29
8     2009-10-30
9     2009-10-31
10    2009-11-01
11    2009-11-02

解决方案 »

  1.   

    select rownum "序号",to_date('2009-10-23','yyyy-mm-dd')+rownum-1 "日期"
    from dual
    connect by rownum<=to_date('2009-11-02','yyyy-mm-dd')-to_date('2009-10-23','yyyy-mm-dd')+1
      

  2.   

    SELECT rownum id, 
            TO_DATE('2009-10-23','YYYY-MM-DD')-1 + ROWNUM AS SDATE FROM DUAL 
    CONNECT BY rownum <=TO_DATE('2009-11-02','YYYY-MM-DD')-TO_DATE('2009-10-23','YYYY-MM-DD')+1;
      

  3.   

    以上sql适用于10g以上的数据库版本,如果低于10g则不能执行成功
    用过程可以这么写
    declare
    startdate varchar2(20):='2009-10-23';
    enddate varchar2(20):='2009-11-2';
    begin
    for i in 1..to_date(enddate,'yyyy-mm-dd')-to_date(startdate,'yyyy-mm-dd')+1
    loop
      dbms_output.put_line(i||'  '||to_char(to_date(startdate,'yyyy-mm-dd')+i-1,'yyyy-mm-dd'));
    end loop;
    end;
    1  2009-10-23
    2  2009-10-24
    3  2009-10-25
    4  2009-10-26
    5  2009-10-27
    6  2009-10-28
    7  2009-10-29
    8  2009-10-30
    9  2009-10-31
    10  2009-11-01
    11  2009-11-02