出現ora01843 無效的月份怎么辦

出現ora01843 無效的月份怎么辦

出現ora01843 無效的月份怎么辦?

執行 下面的sql語句

select?TO_DATE('01-FEB-1988',?'DD-MON-YYYY')?from?dual;

出現了如下的錯誤:

出現ora01843 無效的月份怎么辦

?

重新查詢了一下 當前系統時間 的日期格式,發現如下:

執行:

SELECT?TO_CHAR(sysdate,?'DD-MON-YYYY','NLS_DATE_LANGUAGE?=?''SIMPLIFIED?CHINESE''')?Chn, ????????TO_CHAR(sysdate,?'DD-MON-YYYY',?'NLS_DATE_LANGUAGE?=?American')?Ame, ????????TO_CHAR(sysdate,?'DD-MON-YYYY',?'NLS_DATE_LANGUAGE?=?Japanese')?Jap, ????????TO_CHAR(sysdate,?'DD-MON-YYYY',?'NLS_DATE_LANGUAGE?=?english')?Eng FROM?DUAL;

出現如下結果:

出現ora01843 無效的月份怎么辦

由SQL語句,可以看出,第一道第四行的TO_CHAR函數獲取系統時間分別為 china,American,Japanese,English

從結果圖看出,在china和Japanese下的時間格式為? 27-7月-2018

由此可知,在上述的問題中,要想將時間格式轉化為? “DD-MON-YYYY”? 這種形式時會出現 ORA-01843的錯誤,因為系統不會去識別 英文的MON;

所以解決辦法如下:

1.將select TO_DATE(’01-FEB-1988′, ‘DD-MON-YYYY’) from dual;中的時間字段改成中文格式的,即“01-二月-1998”;

2.設置其NLS_DATE_LANGUAGE的格式為Aerican或者是English即可

ALTER?SESSION?SET?nls_date_language?=?'SIMPLIFIED?CHINESE';

推薦:《mysql視頻教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享