SQL-文字与插入到中的格式字符串不匹配
我在我的网站中创建了一个空表,其中包含一组表,这些表具有以下列/数据类型: 名称-VARCHAR2 MRN-编号 日期-日期 电子日期 熟食店-日期 WB-VARCHAR2 ST_ID-VARCHAR2 评论-VARCHAR2 EI-编号 下面是我用来填充表的近800行代码之一SQL-文字与插入到中的格式字符串不匹配,sql,oracle,sql-insert,Sql,Oracle,Sql Insert,我在我的网站中创建了一个空表,其中包含一组表,这些表具有以下列/数据类型: 名称-VARCHAR2 MRN-编号 日期-日期 电子日期 熟食店-日期 WB-VARCHAR2 ST_ID-VARCHAR2 评论-VARCHAR2 EI-编号 下面是我用来填充表的近800行代码之一 INSERT INTO SANDBOX.W_C VALUES ('S,E',11300033,'2012-02-18 00:00:00','2012-03-01 00:00:00','2013-02-18 00:00:0
INSERT INTO SANDBOX.W_C VALUES ('S,E',11300033,'2012-02-18 00:00:00','2012-03-01 00:00:00','2013-02-18 00:00:00','N','006i',NULL,NULL);
当我运行这段代码时,我得到以下消息:literal与format string不匹配。我做错了什么?你需要约会
INSERT INTO SANDBOX.W_C VALUES ('S,E',11300033,
TO_DATE('2012-02-18', 'yyyy-mm-dd'),
TO_DATE('2012-03-01', 'yyyy-mm-dd'),
TO_DATE('2013-02-18', 'yyyy-mm-dd'),'N','006i',NULL,NULL);
当您以字符串形式提供日期时,数据库将使用其默认设置来尝试转换字符串。处理这一问题的最佳方法是使用to_date,如斯凯里奇的回答所示 但是,在运行insert语句之前,也可以使用alter session更改默认日期掩码:
ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
可能是@PaulL的重复我看到了这个问题,但我仍然不明白我的代码有什么问题。代码有什么问题恰恰是另一个提问者的代码有什么问题-你需要使用to_date函数。有没有更快的方法?我有将近800行类似的插入到。。。Code更快的方法是使用日期列(如varchar)在伪表中插入值,然后使用select填充右表,该select将varchar转换为date。。