我试图在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 +`')
答案 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'
(可以在格式掩码中使用AM
或PM
)。
请注意,如果字符串包含AM / PM,则不能像示例中那样使用HH24
。
如果不清楚,to_timestamp()
可以使用诸如'12/21/2018, 2:56:13 PM'
之类的字符串,并构造一个Oracle timestamp
,Oracle是number
,{{ 1}}或varchar2
。它以内部二进制格式存储,并且仅在出于显示目的需要时以人类可读格式显示。如果“我想以这种格式插入时间” 表示您要将特定的显示格式与特定的timestamp变量相关联,则不可能。
此外,如果框架允许您绑定date
(或timestamp
)变量,而不是构造SQL来使用串联文字在数据库上完成工作,则可以避免整个转换。 / p>