insert into myTable(myDate)values(to_date('2003/01/01','yyyy/mm/dd'))

解决方案 »

  1.   

    SQL> create table date_temp
      2  (mydate date);Table created.SQL> CREATE OR REPLACE procedure ins_date_by_year(p_year varchar2)
      2  is
      3    w_end_date date := to_date('12/31/'||p_year,'mm/dd/yyyy');
      4    w_start_date date := trunc(w_end_date,'y');
      5  begin
      6    for i in 1 .. w_end_date - w_start_date + 1 loop
      7      insert into date_temp values (w_start_date+1);
      8    end loop;
      9  end ins_date_by_year;
     10  /Procedure created.SQL> select count(*) from date_temp;  COUNT(*)
    ----------
             0SQL> exec ins_date_by_year('2003')PL/SQL procedure successfully completed.SQL> select count(*) from date_temp;  COUNT(*)
    ----------
           365上面是用了一个循环,可以直接用一句sql完成:
    insert into date_temp
    select to_date('1/1/2003','mm/dd/yyyy')+rownum-1 from all_objects
    where rownum <= to_date('12/31/2003','mm/dd/yyyy')- to_date('1/1/2003','mm/dd/yyyy') +1;