SQL> select to_date('2003-01','yyyy-mm')+num-1 from(select rownum num from all_tables where rownum<3
2);TO_DATE('2003-01','
-------------------
2003-01-01 00:00:00
2003-01-02 00:00:00
2003-01-03 00:00:00
2003-01-04 00:00:00
2003-01-05 00:00:00
2003-01-06 00:00:00
2003-01-07 00:00:00
2003-01-08 00:00:00
2003-01-09 00:00:00
2003-01-10 00:00:00
2003-01-11 00:00:00
2003-01-12 00:00:00
2003-01-13 00:00:00
2003-01-14 00:00:00
2003-01-15 00:00:00
2003-01-16 00:00:00
2003-01-17 00:00:00
2003-01-18 00:00:00
2003-01-19 00:00:00
2003-01-20 00:00:00
2003-01-21 00:00:00TO_DATE('2003-01','
-------------------
2003-01-22 00:00:00
2003-01-23 00:00:00
2003-01-24 00:00:00
2003-01-25 00:00:00
2003-01-26 00:00:00
2003-01-27 00:00:00
2003-01-28 00:00:00
2003-01-29 00:00:00
2003-01-30 00:00:00
2003-01-31 00:00:00已选择31行。SQL>
2);TO_DATE('2003-01','
-------------------
2003-01-01 00:00:00
2003-01-02 00:00:00
2003-01-03 00:00:00
2003-01-04 00:00:00
2003-01-05 00:00:00
2003-01-06 00:00:00
2003-01-07 00:00:00
2003-01-08 00:00:00
2003-01-09 00:00:00
2003-01-10 00:00:00
2003-01-11 00:00:00
2003-01-12 00:00:00
2003-01-13 00:00:00
2003-01-14 00:00:00
2003-01-15 00:00:00
2003-01-16 00:00:00
2003-01-17 00:00:00
2003-01-18 00:00:00
2003-01-19 00:00:00
2003-01-20 00:00:00
2003-01-21 00:00:00TO_DATE('2003-01','
-------------------
2003-01-22 00:00:00
2003-01-23 00:00:00
2003-01-24 00:00:00
2003-01-25 00:00:00
2003-01-26 00:00:00
2003-01-27 00:00:00
2003-01-28 00:00:00
2003-01-29 00:00:00
2003-01-30 00:00:00
2003-01-31 00:00:00已选择31行。SQL>
SQL> declare
2 a date;
3 num number;
4 begin
5 a:=trunc(sysdate,'mm');
6 num:=trunc(add_months(sysdate,1),'dd')-1-trunc(sysdate,'dd');
7 for i in 1..num loop
8 dbms_output.put_line(to_char(a,'yyyy-mm-dd'));
9 a:=a+1;
10 end loop;
11 end;
12 /
2003-01-01
2003-01-02
2003-01-03
2003-01-04
2003-01-05
2003-01-06
2003-01-07
2003-01-08
2003-01-09
2003-01-10
2003-01-11
2003-01-12
2003-01-13
2003-01-14
2003-01-15
2003-01-16
2003-01-17
2003-01-18
2003-01-19
2003-01-20
2003-01-21
2003-01-22
2003-01-23
2003-01-24
2003-01-25
2003-01-26
2003-01-27
2003-01-28
2003-01-29
2003-01-30PL/SQL procedure successfully completed
num:=trunc(add_months(sysdate,1),'dd')-trunc(sysdate,'dd');
多减了一个1,应为:
num:=trunc(add_months(sysdate,1),'dd')-trunc(sysdate,'dd');