我在procedure里定义了一个date类型的变量!
然后把sysdate赋给它,可是在下面的insert 或者 update语句里用到它时,最终在DB里怎么也不显示时分秒?
我最后用to_char和to_date来回转后还是没用的!就是先:to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') 把这个值赋给字符串dt,然后在insert 或者 update 语句里再用to_date(dt,'yyyy/mm/dd hh24:mi:ss')转过来,可是最后在Oracle的表里面还是年月日,没有时分秒,我就郁闷了!
请各位大侠帮帮忙!

解决方案 »

  1.   

    补充下:我insert或者update的栏位类型是date类型的!
      

  2.   

    字段类型应该定义成 datetime类型的。如果是date类型,就会把你的数据自动转换为date,所以就没有时分秒了。
      

  3.   

    可能是前台工具不支持时间,或者在SQL*PLUS中日期显示格式没有设置时间,在SQL*PLUS中可以这样设置:ALTER SESSION SET nls_date_format='YYYY-MM-DD HH24:MI:SS';或者设置一个环境变量NLS_DATE_FORMAT,变量值为YYYY-MM-DD HH24:MI:SS,然后用SQLPLUS重新登录到ORACLE。
      

  4.   

    假如有个表叫table1,有两个栏位begin_date和end_date
    现在在一个procedure里,定义一个变量:
    create or replace procedure refresh is
    dt_begin date;
    begin
    dt_begin:=sysdate;
    ........
    --若干条语句
    ............
    execute immediate replace('insert into table1(begin_date,end_date) values(`'||dt_begin||'`,sysdate)','`','''');
    end;最后在表里看到结果却是:begin_date没有时分秒,而end_date里有时分秒!!
    这是为什么?
    end;
      

  5.   

    To lormee(老米) :
       Oracle 有DateTime型吗?
    怎么定义?
    dt date;改成 dt datetime 编译出错
      

  6.   

    execute immediate 'insert into table1(begin_date,end_date) values (:b,sysdate)' using dt_begin;
    试试这样的写法?
      

  7.   

    果然管用,不知道原因为什么?
    RobinHZ(熊掌) 能回答吗?
    先把分给了!