ORA-01861错误

时间:2012-05-15 20:11:39

标签: sql oracle10g

我正在尝试将数据从Netezza插入到Oracle.Here是我的插入,如下所示。但是它们不起作用并向我提出上述错误。

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
);

1 个答案:

答案 0 :(得分:3)

ORA-01861: literal does not match format string错误意味着AM_CTL_DDS_LOAD表的第三列被定义为DATE,而不是VARCHAR2,并且字符串的隐式转换为日期失败,因为您的会话NLS_DATE_FORMAT不是'YYYY / MM / DD'。解决问题的最佳方法是通过使用适当的格式掩码显式调用DATE来显式插入VARCHAR2而不是TO_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') );