日期未插入到oracle中

日期未插入到oracle中,oracle,oracle11g,oracle10g,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:4

我试图在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 +`')

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

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

因为没有第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

如果不清楚,则使用一个字符串,例如
'12/21/2018,2:56:13 PM'
,并构造一个Oracle
时间戳
,它是一个本机数据类型,如
number
varchar2
date
。它以内部二进制格式存储,仅在显示需要时以人类可读的格式显示。如果“我想在此格式中插入时间”意味着您想将特定的显示格式与特定的时间戳变量相关联,那么这是不可能的


此外,如果框架允许您绑定
timestamp
(或
date
)变量,而不是使用串联的文本构造SQL在数据库上执行任务,则可以避免整个转换。

您使用的是什么语言?我使用的是node-red。请共享日期格式图片和输入字符串。看起来一个比另一个短。@WilliamRobertson这是我的日期格式DD-MM-YY HH24:MI:SS.FF。不要这样连接用户输入。使用预先准备好的语句(或编程语言中的任何等效语句),该语句使用占位符,并将值作为正确类型的对象(而不是字符串)单独传递
to_timestamp('04-12-18 03:49:37.000000000 PM', 'DD-MM-YY HH24:MI:SS.FF')