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-190001-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';

然后执行你的语句。