日期未插入到 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'
(您可以在格式掩码中使用 AM
或 PM
)。
请注意,如果字符串包含 AM/PM,则不能像示例中那样使用 HH24
。
如果不清楚,to_timestamp()
接受一个字符串,如 '12/21/2018, 2:56:13 PM'
并构造一个 Oracle timestamp
,这是一个像 number
的本机数据类型, varchar2
或 date
。它以内部二进制格式存储,仅在需要显示时以人类可读的格式呈现。如果 "I want to insert time in this format" 意味着您想将特定的显示格式与特定的时间戳变量相关联,那么这是不可能的。
此外,如果框架允许您绑定 timestamp
(或 date
)变量,而不是构造 SQL 来完成工作,则可以避免整个转换使用串联文字的数据库。
我正在尝试在 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'
(您可以在格式掩码中使用 AM
或 PM
)。
请注意,如果字符串包含 AM/PM,则不能像示例中那样使用 HH24
。
如果不清楚,to_timestamp()
接受一个字符串,如 '12/21/2018, 2:56:13 PM'
并构造一个 Oracle timestamp
,这是一个像 number
的本机数据类型, varchar2
或 date
。它以内部二进制格式存储,仅在需要显示时以人类可读的格式呈现。如果 "I want to insert time in this format" 意味着您想将特定的显示格式与特定的时间戳变量相关联,那么这是不可能的。
此外,如果框架允许您绑定 timestamp
(或 date
)变量,而不是构造 SQL 来完成工作,则可以避免整个转换使用串联文字的数据库。