Oracle數據庫默認情況下。會以DD-MON-YY的形式顯示日期。當中DD是天數,MON是月份的前三個字母(大寫)。而YY是年份的最后兩位。數據庫實際上會為年份存儲4位數字,可是默認情況下僅僅會顯示最后兩位。
一個簡單的語句:
SELECT TO_DATE('21-MAY-2014') FROM dual;
引發ORA-01843:無效的月份。
PL/SQL Developer錯誤:

命令行:

分析:通過命令行中日期的顯示發現。日期的顯示是以中文格式顯示(Oracle知道我們client的環境為中文環境,所以轉換為中文格式顯示),而我們SQL語句所針對的環境是英文環境。到這里錯誤已經非常明顯啦。
解決之道(統一日期的語言):
統一中文: SELECT TO_DATE('21-5月-2014') FROM dual;
統一英文:
1、改動client會話日期的語言: ALTER SESSION SET nls_date_language='american';
2、成功運行: SELECT TO_DATE('21-MAY-2014') FROM dual;
