SQL - literal与INSERT INTO中的格式字符串不匹配

时间:2016-06-20 20:07:44

标签: sql oracle sql-insert

我创建了一个空表 - 在我的网站中包含一堆表 - 具有以下列/数据类型:

NAME - VARCHAR2

MRN - NUMBER

DATE_S - DATE

E - DATE

DELI - DATE

WB - VARCHAR2

ST_ID - VARCHAR2

评论--VARCHAR2

EI - NUMBER

以下是我用来填充表格的近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:00','N','006i',NULL,NULL);

当我运行那段代码时,我收到以下消息:literal does not match format string。我做错了什么?

2 个答案:

答案 0 :(得分:2)

你需要_Date

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

答案 1 :(得分:1)

当您将日期作为字符串提供时,数据库会使用它的默认设置来尝试转换字符串。处理此问题的最佳方法是使用to_date,就像在scaisEdge的答案中一样。

但是,您还可以在运行alter session语句之前使用insert更改默认日期掩码:

ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';