ORA-01843: 无效的月份
来源:互联网 发布:姬存希到底好不好知乎 编辑:程序博客网 时间:2024/05/01 15:49
今天在使用MONTHS_BETWEEN('01-SEP-95','11-JAN-94')语句时,数据库报告了一个ORA-01843的错误。通过在网上的答案,终于解决了问题。
原文链接:http://www.cnblogs.com/rootq/archive/2009/05/16/1458090.html
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 无效的月份
- ORA-01843: 无效的月份
- ORA-01843: 无效的月份
- ORA-01843:无效的月份
- ORA-01843:无效的月份
- ORA-01843:无效的月份
- ORA-01843:无效的月份
- ORA-01843:无效的月份解决方法
- SQL []; ORA-01843: 无效的月份
- oracle ora-01843: 无效的月份
- ASH ORA-01843: 无效的月份
- 造成ORA-01843 无效的月份的一些原因
- 造成ORA-01843 无效的月份 的一些原因
- ORA-01843 无效的月份的解决方法/NLS_DATE_FORMAT参数
- 造成ORA-01843 无效的月份 的一些原因
- 解决ORA-01843:无效的月份的方法
- 造成ORA-01843 无效的月份 的一些原因
- Oracle错误:ORA-01843:无效月份的问题
- 关于java学习的一些东西
- C语言可变参数
- 加载一个图片文件
- 35岁之前成功的12条黄金法则
- Lotus Notes数据库与关系型数据库概念的比较
- ORA-01843: 无效的月份
- C89、C99以及__STDC__(转自维基百科)
- linux uniq使用命令
- 常见的十五种Java开发工具
- const_iterator转iterator
- 了解云服务在业务发生波动时的最佳系统性能
- js操作map集合
- 请问,在下面这个函数中m_pMainWnd = &dlg;的作用是什么?为什么我把这句话注释起来之后程序依然是正确的啊?
- Crontab入门实例