在Oracle中插入时间戳

时间:2016-04-27 07:24:25

标签: sql oracle datetime timestamp

我正在尝试将下面的行插入Oracle数据库,但是我收到错误 [22008][1830] ORA-01830: date format picture ends before converting entire input string

insert into tbl (coldate, start, end) 
values (
TO_DATE('2005-03-04 02:04:30', 'YYYY-MM-DD HH24:MI:SS'),
TO_TIMESTAMP('2005-03-23 09:06:51.055000', 'YYYY-MM-DD HH24:MI:SS'), 
TO_TIMESTAMP('2005-04-26 23:32:59.430000', 'YYYY-MM-DD HH24:MI:SS')
);

3 个答案:

答案 0 :(得分:1)

错误消息告诉您应该做什么:您的格式掩码太短"短"为您提供的价值。您需要在to_timestamp()

的格式掩码中包含小数秒
TO_TIMESTAMP('2005-03-23 09:06:51.055000', 'YYYY-MM-DD HH24:MI:SS.FF6')

有关to_timestamp()中使用的格式模型的更多详细信息,请参阅手册:

https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#CDEHIFJA

答案 1 :(得分:1)

您缺少格式字符串中的小数秒规范:

insert into tbl (coldate, start, end) 
values (
TO_DATE('2005-03-04 02:04:30', 'YYYY-MM-DD HH24:MI:SS'),
TO_TIMESTAMP('2005-03-23 09:06:51.055000', 'YYYY-MM-DD HH24:MI:SS.FF'), 
-- Here ----------------------------------------------------------^
TO_TIMESTAMP('2005-04-26 23:32:59.430000', 'YYYY-MM-DD HH24:MI:SS.FF')
-- And here ------------------------------------------------------^
);

答案 2 :(得分:0)

使用看似未记录的功能TIMESTAMP

还有另一种方法

TIMESTAMP不需要传递日期格式,但是日期必须采用标准UTC日期格式。

例如:

insert into table (dateTimeField) values (TIMESTAMP '2019-07-24 04:23:14');