0

我正在尝试运行此插入命令

INSERT INTO DW_BATCH_HIST   
(DW_BATCH_HIST.BATCH_NBR, DW_BATCH_HIST.TRANS_START_DATE, DW_BATCH_HIST.BATCH_STATUS) 
VALUES(82,to_date('27-SEPT-2012 11:00:00.000','DD-MON-YYYY hh:mi:ss'), 1)

我收到此错误:

ORA-01841: (完整)年份必须介于 -4713 和 +9999 之间,而不是 0

年份是有效年份,所以我不明白为什么会收到此错误。我错过了什么?

4

3 回答 3

2

面具部分的月份MON应该是三个字母的缩写,而不是你所拥有的四个。

编辑:正如其他人所指出的,毫秒也应该被删除。

'27-SEP-2012 11:00:00'
于 2012-09-27T14:40:48.883 回答
0

将“SEPT”更改为“SEP”并从时间值中删除毫秒。

于 2012-09-27T14:44:18.767 回答
0

如果您想在 Oracle(和大多数其他数据库)中保持日期/时间格式的安全,请使用 SQL 标准时间戳文字格式。在你的情况下,写

TIMESTAMP '2012-09-27 11:00:00.000'

如果这不是一个选项,请固定您的日期:

to_date('27-SEP-2012 11:00:00','DD-MON-YYYY hh:mi:ss')
-- removed the T from SEPT, as well as the millisecond part
于 2012-09-27T14:43:16.910 回答