出現ora01843 無效的月份怎么辦?
執行 下面的sql語句時
select?TO_DATE('01-FEB-1988',?'DD-MON-YYYY')?from?dual;
出現了如下的錯誤:
?
重新查詢了一下 當前系統時間 的日期格式,發現如下:
執行:
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;
出現如下結果:
由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