我创建了一个空表 - 在我的网站中包含一堆表 - 具有以下列/数据类型:
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
。我做错了什么?
答案 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';