我正在尝试执行以下查询。
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"
我该如何解决这个问题?
答案 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';
然后执行你的陈述。