Oracle插入查询返回错误01843. 00000 - “不是有效月份”

时间:2015-01-21 03:32:55

标签: sql oracle

我正在尝试执行以下查询。

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"

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

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;

答案 1 :(得分:0)

远程表的日期字符串似乎采用'dd-mm-yyyy'的格式。因此,您必须更改会话的字符串的日期解释:

alter session set nls_date_format = 'dd-mm-yyyy';

然后执行你的陈述。