日期未插入到 oracle 中

Date is not inserting in oracle

我正在尝试在 oracleDB 中插入当前时间,但我遇到了一些错误。

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

当前时间

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

时间戳的值为 12/21/2018,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 +`')

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

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' 相同的格式(来自 "I want insert time in this format"),我会得到您的 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,这是一个像 number 的本机数据类型, varchar2date。它以内部二进制格式存储,仅在需要显示时以人类可读的格式呈现。如果 "I want to insert time in this format" 意味着您想将特定的显示格式与特定的时间戳变量相关联,那么这是不可能的。

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