为什么缺少时间?

Dee*_*ent 0 sql oracle plsql oracle10g oracle11g

我有下面的代码

declare
  v_rst varchar2(200);

  cursor c_cur is
    select sysdate from dual;
begin

  open c_cur;
  fetch c_cur
    into v_rst;
  close c_cur;

  dbms_output.put_line(v_rst);

end;
Run Code Online (Sandbox Code Playgroud)

它的输出结果是"23-DEC-14"

当我在查询下面运行时,结果是"12/23/2014 11:21:06 AM"

select sysdate from dual;
Run Code Online (Sandbox Code Playgroud)

当我运行第一个代码时,我不知道为什么TIME部分消失了.

任何人都可以解释会非常感激.

Old*_*mer 7

时间不会"消失".那种格式只是默认格式.您需要将NLS_DATE_FORMAT设置为默认值:

 ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH:MI:SS';
Run Code Online (Sandbox Code Playgroud)

或者你想要的任何格式.或者,使用to_char函数更改查询以格式化日期字段

 select to_char(sysdate, 'MM/DD/YYYY HH:MM:SS') from dual;
Run Code Online (Sandbox Code Playgroud)

请在此处查看格式模型.