0

NetezzaからOracleにデータを挿入しようとしています。以下のように挿入しますが、機能せず、上記のエラーが発生します。

INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/12');
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/09');
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/21');
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,'2012/02/23');

私のテーブル構造は以下の通りです。

CREATE TABLE AM_CTL_DDS_LOAD
(
    MAS_DIV_CD VARCHAR(5),
    LD_SEQ_NBR INTEGER NOT NULL,
    TUNING_DT DATE NOT NULL
);
4

1 に答える 1

3

このORA-01861: literal does not match format stringエラーは、AM_CTL_DDS_LOADテーブルの3番目の列がでDATEはなく、として定義されており、セッションが「YYYY / MM / DD」ではないVARCHAR2ため、文字列の日付への暗黙的な変換が失敗していることを意味します。NLS_DATE_FORMATこの問題を解決する最善の方法は、適切なフォーマットマスクを使用し て明示的に呼び出すことによってDATEではなく、を明示的に挿入することです。VARCHAR2TO_DATE

INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/12', 'YYYY/MM/DD') );
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/09', 'YYYY/MM/DD') );
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/21', 'YYYY/MM/DD') );
INSERT INTO AM_CTL_DDS_LOAD values('ALB',1002,to_date('2012/02/23', 'YYYY/MM/DD') );
于 2012-05-15T20:17:17.697 に答える