存储日期的变量,分钟和秒

时间:2016-10-25 08:47:25

标签: sql oracle

我想在日志表中添加分钟和秒的时间,我使用的是SYSDATE,但它不存储分钟和秒:

  SYS_DATE TIMESTAMP;

  SYS_DATE :=TO_DATE(''||SYSTIMESTAMP()||'','DD-MM-YYYY HH24:MI:SS');

  INSERT INTO _LOGTB(PROCESS_NAME,TYPE,START_DATE,END_DATE,NUM_OF_COUNT) VALUES
  (''PROCEDUREEEE'',''INSERT'','''||SYS_DATE||''','''','132111')';  
       commit;

我收到此错误:

  

ORA-01830:日期格式图片在转换整个输入字符串之前结束

我使用sysdate()

时的输出

enter image description here

3 个答案:

答案 0 :(得分:4)

我很抱歉,但事实并非如此。 Sysdate包含分钟和秒。由于您的日期时间系统格式,您可能看不到它。

下一步

我看到你使用像动态sql这样的东西。并且可能在另一个地方出错。

下一步

如果使用数据类型时间戳,则无需将systimestamp转换为时间戳。它已经完成了。此外它的奇怪转换它到目前为止。如果您需要时间戳,请使用next。

SYS_DATE := SYSTIMESTAMP();

我的下一个假设是你的表_LOGTB包含带有date的START_DATE,END_DATE列 - 数据类型。如果是这样,你可以插入sysdate,一切都没问题。

 INSERT INTO _LOGTB(PROCESS_NAME,TYPE,START_DATE,END_DATE,NUM_OF_COUNT) VALUES
('PROCEDUREEEE','INSERT',SYSDATE,null,132111);  

至少。您可以通过下一个查询检查您的表中是否包含有关分钟和秒的信息:

select to_char(START_DATE,'YYYY-MM-DD HH24:MI:SS') from _LOGTB; 

答案 1 :(得分:1)

尝试更简单的事情......

insert into _LOGTB (PROCESS_NAME,TYPE,START_DATE,END_DATE,NUM_OF_COUNT)
  values 
    ('PROCEDUREEEE', 'INSERT', to_char(sysdate, 'DD-MM-YYYY HH24:MI:SS'), '', 132111)

答案 2 :(得分:1)

SYSDATE始终包含oracle中的时间信息。如果您使用的是sql developer,请尝试按照建议的in this post

更改首选项中的日期格式设置