大家好: 我写了一个存储过程,有两个输入参数,分别是时间:小时和日期:年月日,存储过程中将这两个参数连接起来, 
比如输入的参数是小时:13,日期20071114,连接后,得到两个日期分别为 
2007111413:00:00   和   2007111413:59:59 但是将他们用to_date函数转换成date类型插入数据库的时候,数据库中两个都成了却变成了200711140:00:00, 
不知怎么回事??? 存储过程代码如下 
CREATE   OR   REPLACE   PROCEDURE   CMCC.STA_YYTOPERATE_TOTAL( 
  hour   in   varchar2, 
  riqi   in   varchar2 
)IS        begintime    varchar216); 
        endtime      varchar2(16); 
        sqlstr       varchar2(4000); 
BEGINbegintime := statdate ¦¦ stathour ¦¦ ':00:00';
endtime   := statdate ¦¦ stathour ¦¦ ':59:59';sqlstr := ' insert into AAA(OPE_DATE) values(' ''||to_date(begintime, 'yyyymmdd hh24:mi:ss')||'' ') ';execute immediate sqlstr;END STA_YYTOPERATE_TOTAL; 但是,我用其他方法验证,字符串变量begintime的值的确是2007111413:00:00, 
为什么用to_date(begintime, 'yyyymmdd hh24:mi:ss';)转换后就变成2007111413:00:00了呢??? 谢谢!!!

解决方案 »

  1.   

    ----------------------
    'yyyymmdd   hh24:mi:ss '
    -------------------------正确的日期和时间 格式间会有空格的,而你的是‘2007111413:00:00’没有空格
    我想应该是这个问题,你把格式调整下再看看哦!
      

  2.   

    sqlstr   :=   'insert into  AAA(OPE_DATE) values(to_date('''||v_date||''',''yyyy-mm-dd hh24:mi:ss'') )'; 
    这个语句这样写就可以了