造成ORA 01843 無效的月份 的一些原因

2021-07-27 05:58:29 字數 2328 閱讀 8479

1)當我們在乙個中文環境的客戶端使用如下sql語句

insert into "temptable" ( deliver_date ) values (to_date('27-jun-2007 15:57:30', 'dd-mon-yyyy hh24:mi:ss') )

runtime error occurred: 1843 (ora-01843: 無效的月份)

資料庫會報告乙個ora-01843的錯誤,這是因為客戶端是中文環境,格式mon就不能用英文的月份寫法,必須用中文的「六月」

如果不想修改sql語句執行的話,就需要在執行該語句之前,使用alter session 命令將nls_date_language修改為american,如下:

alter session set nls_date_language='american' 

--以英語顯示日期

2)今天出現了ora-01843的錯誤.這個錯誤代表無效的月份一般在日期轉化的時候會提示。

解決方法

alter session set nls_date_format='dd-mon-yy';

可是今天我這樣做還是不管用。實際上問題出在這裡:

microsoft windows xp [版本 5.1.2600]

o:>sqlplus greatfinish/finish

sql*plus: release 9.2.0.1.0 - production on 星期三 6月 21 19:18:00 2006

連線到:

oracle9i enterprise edition release 9.2.0.1.0 - production

with the partitioning, olap and oracle data mining options

jserver release 9.2.0.1.0 - production

greatfinish@ora920> select to_date('jan 01 1988','mon dd yyyy') from dual;

select to_date('jan 01 1988','mon dd yyyy') from dual

*error 位於第 1 行:

ora-01843: 無效的月份

greatfinish@ora920> alter session set nls_date_format='mon dd yyyy';

會話已更改。

--修改了nls_date_format問題依然存在

greatfinish@ora920> select to_date('jan 01 1988','mon dd yyyy') from dual;

select to_date('jan 01 1988','mon dd yyyy') from dual

*error 位於第 1 行:

ora-01843: 無效的月份

--查了一下sysdate發現原因了是客戶端字符集問題

greatfinish@ora920> select sysdate from dual;

sysdate

------------

6月 21 2006

greatfinish@ora920> exit

從oracle9i enterprise edition release 9.2.0.1.0 - production

with the partitioning, olap and oracle data mining options

jserver release 9.2.0.1.0 - production中斷開

o:>set nls_lang=american_america.zhs16gbk

o:>sqlplus greatfinish/finish

sql*plus: release 9.2.0.1.0 - production on wed jun 21 19:20:22 2006

connected to:

oracle9i enterprise edition release 9.2.0.1.0 - production

with the partitioning, olap and oracle data mining options

jserver release 9.2.0.1.0 - production

--修改完畢成功select

greatfinish@ora920> select to_date('jan 01 1988','mon dd yyyy') from dual;

to_date('

---------

01-jan-88

greatfinish@ora920>

ORA 01843 無效的月份

今天開發ssh專案,遇到 ora 01843 無效的月份 這個問題。起初還有一系列問題,最後經過排查,確認是這個問題導致插入資料庫失敗。網上找了一些文章,無法解決。最後仔細檢查欄位的時候發現用myeclipse生成的類檔案欄位和資料庫中字段不一樣 資料庫中字段類是timestamp,但通過myecl...

ORA 01843 無效的月份

在plsql developer中執行select months between 29 mar 2008 28 feb 2008 from dual報錯。sql select months between 29 mar 2008 28 feb 2008 from dual select months...

Oracle問題 ORA 01843 無效的月份

查詢當前系統中,日期的顯示方式 select from v nls parameters 結果如下 查詢不同情況日期顯示方式 select to char sysdate,dd mon yyyy nls date language simplified chinese chn,to char sys...