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

时间:2021-10-12 07:47:13

*********************************情景分析**************************************
SQL> insert into scott.emp values(7968,'sheng','CLERK',7902,'2011-09-09','800','
300',20);
insert into scott.emp values(7968,'sheng','CLERK',7902,'2011-09-09','800','300',
20)
                                                       *
第 1 行出现错误:
ORA-01861: 文字与格式字符串不匹配

根据desc emp表你就会发现hiredate是date类型

date类型由会话环境决定,或者由用户定义,与数据库无关

所以对于上类情况,应该做
SQL> select sysdate from dual;(这个操作可以看到你的oracle环境的系统时间是什么格式的)

SYSDATE
--------------
28-11月-11

由于我设置的是zhs16gbk字符集,所以显示的时间是中文的显示方式。

这个时候可以用两种方法来解决这个问题。

一,用todate转换函数,来对时间做处理,进行插入


SQL> insert into scott.emp values(7968,'sheng','CLERK',7902,to_date('2011-09-09'
,'YYYY-mm-dd'),'800','300',20);

已创建 1 行。(此操作没问题)


二,修改当前会话时间格式,再进行插入

SQL> alter session set nls_date_format='YYYY-MM-DD';

会话已更改。

SQL> insert into scott.emp values(7970,'dong','CLERK',7902,'2011-09-09','800','3
00',20);

已创建 1 行。 (此操作也没问题)

 
    但是alter session操作,只是修改当前会话的操作,如果换个用户,后者在打开一个窗口,session
的效果都会失效。