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

zhangshengdong發表於2011-11-28

**********************************情景分析**************************************
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部落格 ” ,連結:http://blog.itpub.net/26446098/viewspace-712201/,如需轉載,請註明出處,否則將追究法律責任。

相關文章