Oracle 插入查询返回错误 01843。00000 - "not a valid month"
Oracle insert query returned error 01843. 00000 - "not a valid month"
我正在尝试执行以下查询。
INSERT INTO X_VW_PRICEPRODUCT_IC
SELECT * FROM ER_PRICEPRODUCT@link;
IN X_VW_PRICEPRODUCT_IC
我有两列相关的 DATE
数据类型。
ER_PRICEPRODUCT 中有两列的值类似于 01-01-1900
和 01-01-1900
当我执行这个 sql 我得到错误 01843. 00000 - "not a valid month"
我该如何解决这个问题?
Oracle 不会自动将 dd-mm-yyyy 或 mm-dd-yyyy 转换为日期。您需要明确使用 to_date()
。虽然,在 insert
中包含列名是个好主意。类似于:
insert into X_VW_PRICEPRODUCT_IC(col1, . . . )
SELECT col1, . . ., to_date(datecol, 'MM-DD-YYYY), . . .
FROM ER_PRICEPRODUCT@link;
远程 table 的日期字符串格式似乎是 'dd-mm-yyyy'。因此,您必须为您的会话更改字符串的日期解释:
alter session set nls_date_format = 'dd-mm-yyyy';
然后执行你的语句。
我正在尝试执行以下查询。
INSERT INTO X_VW_PRICEPRODUCT_IC
SELECT * FROM ER_PRICEPRODUCT@link;
IN X_VW_PRICEPRODUCT_IC
我有两列相关的 DATE
数据类型。
ER_PRICEPRODUCT 中有两列的值类似于 01-01-1900
和 01-01-1900
当我执行这个 sql 我得到错误 01843. 00000 - "not a valid month"
我该如何解决这个问题?
Oracle 不会自动将 dd-mm-yyyy 或 mm-dd-yyyy 转换为日期。您需要明确使用 to_date()
。虽然,在 insert
中包含列名是个好主意。类似于:
insert into X_VW_PRICEPRODUCT_IC(col1, . . . )
SELECT col1, . . ., to_date(datecol, 'MM-DD-YYYY), . . .
FROM ER_PRICEPRODUCT@link;
远程 table 的日期字符串格式似乎是 'dd-mm-yyyy'。因此,您必须为您的会话更改字符串的日期解释:
alter session set nls_date_format = 'dd-mm-yyyy';
然后执行你的语句。