在oracle 817上,日期和字符串可以通过函数to_date(),to_char()直接转换,请问在oracle 7.3中,如何实现将日期'2009-01-01'转换成字符串'2009-01-01 00:00',谢谢

解决方案 »

  1.   

    补充说明:SQL> create or replace procedure  aa
      2   is
      3    i integer;
      4    j integer;
      5    d date;
      6    e date;
      7    d_start date;
      8    d_end date;
      9    f varchar(16);
     10  begin
     11    d_start:=to_date('20080101','yyyymmdd');
     12    d_end:=to_date('20080103','yyyymmdd');
     13    d:=d_start;
     14    j:=1;
     15    for i in 0..730  loop
     16      dbms_output.put_line(i+1);
     17      dbms_output.put_line(d+i);
     18      e:=to_date(d,'YYYY-MM-DD HH24:MI');
     19      f:=to_char(d);
     20     end loop;
     21  end;
     22  /Procedure created.SQL> exec aa
    1
    01-JAN-08
    BEGIN aa; END;*
    ERROR at line 1:
    ORA-01858: a non-numeric character was found where a numeric was expected
    ORA-06512: at "MEDADM.AA", line 18
    ORA-06512: at line 1
      

  2.   

     create or replace procedure  aa 
     is 
       i integer; 
       j integer; 
       d date; 
       e date; 
       d_start date; 
       d_end date; 
       f varchar(16); 
    begin 
      d_start:=to_date('20080101','yyyymmdd'); 
      d_end:=to_date('20080103','yyyymmdd'); 
      d:=d_start; 
      j:=1; 
      for i in 0..730  loop 
        ---dbms_output.put_line(i+1); 
        ---dbms_output.put_line(d+i); 
        e:=to_date(to_char(d,'yyyy-mm-dd')||'00:00','YYYY-MM-DD HH24:MI'); 
        f:=to_char(d,'yyyyy-mm-dd'); 
      end loop; 
    end; 
    / 由于要输出的内容非常的多,导致缓冲区很快就用完了。不使用dbms_output就可以了
      

  3.   

     d date; e:=to_date(d,'YYYY-MM-DD HH24:MI');你这里d是个date类型,所以to_date(d, 'YYYY-MM-DD HH24:MI')先把d安装你数据库的日期格式转换成字符串,这里你的数据库的默认格式不是'YYYY-MM-DD HH24:MI'这样的格式,所以to_date时候出现问题。你这里 e:=to_date(d,'YYYY-MM-DD HH24:MI');目的是怎样的
    直接e:=d就可以了 都是date类型的。
      

  4.   

    说明,此过程是为了批量调用另一个过程的。但另一个过程中的一个条件是形如('yyyy-mm-dd hh24:mi)字符串的格式.问题已经解决。下次我会把我的解决方式贴出来,同时会试用上面大家给出的方法,试完后再给分,谢谢了
      

  5.   

    oracle中有一个时间函数是:to_timestamp,这个应该可以用。
    注: TO_TIMESTAMP(参数时间,'yyyymmddhh24miss,ff3')