ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-01861_文字与格式字符串不匹配

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

原创 Linux操作系统 作者:zhangshengdong 时间:2011-11-28 10:50:00 0 删除 编辑

**********************************情景分析**************************************
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
的效果都会失效。
    如何修改系统级别的时间格式,我还没试过,没做过的事情,就不误导大家了。有机会我再试试

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26446098/viewspace-712201/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-11-18

  • 博文量
    25
  • 访问量
    91402