Oracle問題:ORA-01843: 無效的月份


錯誤提示

錯誤提示

問題分析

查詢當前系統中,日期的顯示方式:

SELECT * FROM v$nls_parameters;

結果如下:
在這里插入圖片描述
查詢不同情況日期顯示方式:

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;

結果:
查詢結果
可以看出:

語言為SIMPLIFIED CHINESE和Japanese時,DATA格式的月份必須為“X月”。
因此需要修改NLS_DATE_LANGUAGE參數。

解決方式

  1. 臨時方法(退出當前會話就會恢復)

每次會話時,修改參數為english或American:

ALTER SESSION SET nls_date_language = 'American';
  1. 永久方法:修改glogin.sql文件

文件路徑為:D:\oracle11g\Administrator\product\11.2.0\dbhome_1\sqlplus\admin

在文件中加入:

ALTER SESSION SET nls_date_language = 'American';

注:使用SQL Plus有效,PLSQL developer無效。

  1. 永久方法:修改注冊表(Windows)

位置:HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDb11g_home1

新建字符串值:NLS_DATE_LANGUAGE
其值為:American

注:SQL Plus和PLSQL developer均有效。

  1. 永久方法:修改用戶環境變量(Unix)(未測試)

export NLS_DATE_FORMAT =AMERICAN

export NLS_DATE_FORMAT ='YYYY-MM-DD HH24:MI:SS'

RMAN會話中設置NLS_DATE_FORMAT 和NLS_LANG

run {

...........

sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";
sql 'alter session set NLS_LANG ="AMERICAN";

...........

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM