用于批量插入语句的 oracle Alter Session NLS FORMAT - 未按预期运行
oracle Alter Session NLS FORMAT for bulk insert statements - not behaving as expected
我已经从 SQL 数据库中以插入语句的格式导出了 table 信息。许多 table 包含 YYYY-MM-DD HH24:MI:SS 格式的时间戳信息。由于有数百个这样的语句,所以我在每个日期添加 TO_DATE() 语句是不现实的。我认为更改会话 NLS DATE 格式可以解决此问题,但我仍然收到有关 ORA-01843: not a valid month
的错误。
列数据类型为 TIMESTAMP
。
示例:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
INSERT INTO gcGovernance (id, userID, grantAppID, grantAppUUID,
grantCommCatID, grantApprovalCmnt, grantApprovalDate) VALUES (758, 163,
408, 'iahfahfahashvai', 0, '', '2016-12-20
14:32:17');
如果接收列是TIMESTAMP,那么需要设置NLS_TIMESTAMP_FORMAT
,而不是NLS_DATE_FORMAT
。
你可以尝试使用格式timestamp'YYYY-MM-DD HH24:MI:SS'
在该示例中 insert
语句如
timestamp'2016-12-20 14:32:17'
用于 grantApprovalDate
列。
我已经从 SQL 数据库中以插入语句的格式导出了 table 信息。许多 table 包含 YYYY-MM-DD HH24:MI:SS 格式的时间戳信息。由于有数百个这样的语句,所以我在每个日期添加 TO_DATE() 语句是不现实的。我认为更改会话 NLS DATE 格式可以解决此问题,但我仍然收到有关 ORA-01843: not a valid month
的错误。
列数据类型为 TIMESTAMP
。
示例:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
INSERT INTO gcGovernance (id, userID, grantAppID, grantAppUUID,
grantCommCatID, grantApprovalCmnt, grantApprovalDate) VALUES (758, 163,
408, 'iahfahfahashvai', 0, '', '2016-12-20
14:32:17');
如果接收列是TIMESTAMP,那么需要设置NLS_TIMESTAMP_FORMAT
,而不是NLS_DATE_FORMAT
。
你可以尝试使用格式timestamp'YYYY-MM-DD HH24:MI:SS'
在该示例中 insert
语句如
timestamp'2016-12-20 14:32:17'
用于 grantApprovalDate
列。