日期未插入oracle

时间:2018-12-21 09:42:03

标签: oracle oracle11g oracle10g

我试图在oracleDB中插入当前时间,但出现一些错误。

"[Error: ORA-01830: date format picture ends before converting entire input string] errorNum: 1830, offset: 137"

当前时间

     var timestamp = new Date().toLocaleString();

时间戳的值是2018年12月21日下午2:56:13

我想以这种格式插入时间04-12-18 03:49:37.000000000 PM

我的插入查询:

     var insertQuery = `insert into ` + global.get('appconfig').oracledbschema + `.` + global.get('appconfig').tableJOBSUMMARY + ` (JOBID,JOBSTARTTIME,LASTUPDATED,RECORDSPROCESSED,JOBTYPE) VALUES 
('` + currentJobID + `', TO_TIMESTAMP('` + timestamp + `', 'DD-MM-YY HH24:MI:SS.FF'),'','','`+jobtype +`')

1 个答案:

答案 0 :(得分:1)

编辑:重新阅读问题,尚不清楚确切的输入和转换格式掩码是什么。如果我尝试

to_timestamp('12/21/2018, 2:56:13 PM', 'DD-MM-YY HH24:MI:SS.FF')

我明白了

ORA-01843: not a valid month

因为没有21个月。

如果我尝试对'04-12-18 03:49:37.000000000 PM'使用相同的格式(来自“我想以这种格式插入时间” ),我会收到ORA-01830错误。

to_timestamp('04-12-18 03:49:37.000000000 PM', 'DD-MM-YY HH24:MI:SS.FF')

如果这是您正在使用的,则错误指出格式掩码对于您尝试转换的字符串而言太短。要处理9个尾随数字和AM / PM指示符,您将需要'DD-MM-YY HH:MI:SS.FF9 PM'(可以在格式掩码中使用AMPM)。

请注意,如果字符串包含AM / PM,则不能像示例中那样使用HH24

如果不清楚,to_timestamp()可以使用诸如'12/21/2018, 2:56:13 PM'之类的字符串,并构造一个Oracle timestamp,Oracle是number,{{ 1}}或varchar2。它以内部二进制格式存储,并且仅在出于显示目的需要时以人类可读格式显示。如果“我想以这种格式插入时间” 表示您要将特定的显示格式与特定的timestamp变量相关联,则不可能。

此外,如果框架允许您绑定date(或timestamp)变量,而不是构造SQL来使用串联文字在数据库上完成工作,则可以避免整个转换。 / p>