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]
(C) 版權所有 1985-2001 Microsoft Corp.
O:\>sqlplus greatfinish/finish
SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 6月 21 19:18:00 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
連接到:
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
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
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 無效的月份 的一些原因
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
MongoDB索引優化詳解
geekpy
2019-02-24 14:20:06
Sql server中一些Select檢索高級用法
wbzjacky
2019-02-24 13:12:37
如何釋放已刪除的InnoDB磁盤空間
lvrenX
2019-02-24 13:04:33
將frm,myi,myd文件打包成sql文件
jason1982
2019-02-24 12:57:22
某熊的技術之路指北 ☯
王下邀月熊_Chevalier
2019-02-23 16:23:03
安裝SQL數據庫之一些常見故障
179390988
2019-02-23 14:05:54
安裝SQL數據庫之補丁安裝常見問題
179390988
2019-02-23 14:05:54
PL/SQL 取幾段查詢結果的交集, 查詢費用報表的條件(R12.1.1)所對應的費用報表規則
tkchw4
2019-02-23 14:05:35
oracle em啓動
huchazsu
2019-02-23 14:01:49
oracle 啓動歸檔模式
huchazsu
2019-02-23 14:01:14
zabbix企業級分佈式監控系統--zabbix-server和zabbix-agent的配置過程
jordanjiao23
2019-02-23 13:59:59
postdrop: create file maildrop/xxx: Permission denied
lingping
2019-02-23 14:05:54