Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-文字与插入到中的格式字符串不匹配_Sql_Oracle_Sql Insert - Fatal编程技术网

SQL-文字与插入到中的格式字符串不匹配

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

我在我的网站中创建了一个空表,其中包含一组表,这些表具有以下列/数据类型:

名称-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: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。。