遇到这样一个问题,假如传入两个日期,比如3月1日和3月5日,要求输出
3月2日,
3月3日,
3月4日
好像
select date from table where 传入日期2-传入日期1,但是不知道怎么写,一定要建个表把所有的日期存起来吗??

解决方案 »

  1.   

    循环使用dbms_output.put_line()来输出每一天即可
      

  2.   

    OPER@XE> create or replace procedure test_p(vd1 varchar2,vd2 varchar2)
      2  as
      3  get_date1 date;
      4  get_date2 date;
      5  cnt number;
      6  begin
      7  get_date1:=to_date(vd1,'yyyymmdd')+1;
      8  get_date2:=to_date(vd2,'yyyymmdd')-1;
      9  cnt:=trunc(get_date2-get_date1);
     10  for i in 0..cnt loop
     11  dbms_output.put_line(get_date1+i);
     12  end loop;
     13  end;
     14  /过程已创建。OPER@XE> exec test_p('20100301','20100305')
    2010-03-02
    2010-03-03
    2010-03-04PL/SQL 过程已成功完成。
      

  3.   

    --开始日期 '2009-03-01'
    --结束日期 '2009-03-10'SELECT LEVEL + DATE '2009-03-01' - 1
      FROM dual
    CONNECT BY LEVEL < DATE '2009-03-10' - DATE '2009-03-01' + 2;
      

  4.   

    --转换成X月X日
    SELECT ltrim(to_char(LEVEL + DATE '2009-03-01' - 1, 'mm'), '0') || '月' ||
           ltrim(to_char(LEVEL + DATE '2009-03-01' - 1, 'dd'), '0') || '日'
      FROM dual
    CONNECT BY LEVEL < DATE '2009-03-10' - DATE '2009-03-01' + 2;
      

  5.   

    SQL code--开始日期 '2009-03-01'
    --结束日期 '2009-03-10'SELECT LEVEL + DATE '2009-03-01' - 1
      FROM dual
    CONNECT BY LEVEL < DATE '2009-03-10' - DATE '2009-03-01' + 2;
    谁解释一下这段代码啊??
      

  6.   

    就是从dual表中去查询时间 
    connect by的意思是 从level=1开始 到结束时间与起始时间的时间差+1天结束
    循环输出LEVEL + DATE '2009-03-01' - 1  结果就是从起始时间开始到结束时间为止的时间结果集