ORA-01861: 文字与格式字符串不匹配

时间:2022-09-17 07:47:24

最近几天在家休假,同事打电话来问在用sql批量插入日期格式数据的时候
出现了ORA-01861: 文字与格式字符串不匹配,在不修改insert语句与oracle
日期格式的前提下,怎么解决这个问题。

 

简单模拟一下解决过程。

 

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as report

 

SQL>  create table T_DATE
  2  (
  3    D DATE,
  4    S VARCHAR2(20)
  5  );
Table created

 

SQL> insert into t_date values('2011-02-19',1);
insert into t_date values('2011-02-19',1)
ORA-01861: 文字与格式字符串不匹配

 

SQL>  ALTER session SET nls_date_format = "YYYY-MM-DD";
Session altered

 

SQL> insert into t_date values('2011-02-19',1);
1 row inserted

SQL> COMMIT;


Commit complete

SQL> SELECT * FROM t_date;
D           S
----------- --------------------
2011-02-19  1


同事测试成功,又问道:我有几千个单独的sql脚本。
每个sql都要加ALTER session SET nls_date_format = "YYYY-MM-DD";岂不是很麻烦?

 

答:只设置一遍,把这些sql脚本集中放到一个sql里来执行就可以了。

如:
ALTER session SET nls_date_format = "YYYY-MM-DD";
@D:/1.sql
@D:/2.sql
。。。
@D:/1000.sql

保存为start.SQL,直接执行这个start.SQL就ok了。