ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-01843 无效的月份

ORA-01843 无效的月份

原创 Linux操作系统 作者:wt03201 时间:2010-03-04 22:21:25 0 删除 编辑
问题:
    在使用sqlplus是执行如下查询:
SQL> SELECT MONTHS_BETWEEN('01-MAY-08', '15-JAN-08') FROM DUAL;
SELECT MONTHS_BETWEEN('01-MAY-08', '15-JAN-08') FROM DUAL
                      *
第 1 行出现错误: 
ORA-01843: 无效的月份

解决方法:
1、数据库会报告一个ORA-01843的错误,这是因为客户端是中文环境,格式mon就不能用英文的月份写法,必须用中文的“六月”
2、如果不想修改sql语句运行的话,就需要在执行该语句之前,使用alter session 命令将nls_date_language修改为american,如下:

SQL> DESC NLS_SESSION_PARAMETERS; 
名称                 是否为空? 类型 
-------------------- -------- ---------------------- 
PARAMETER                     VARCHAR2(30) 
VALUE                         VARCHAR2(40)
SQL> SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_LANGUAGE';
PARAMETER                 VALUE  
------------------------- --------------------          
NLS_LANGUAGE              SIMPLIFIED CHINESE          
SQL> SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_DATE_LANGUAGE';
PARAMETER                     VALUE
------------------------- --------------------
NLS_DATE_LANGUAGE         SIMPLIFIED CHINESE            
SQL> ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
会话已更改。
SQL> SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_DATE_LANGUAGE';
PARAMETER                    VALUE                      
------------------------- --------------------
NLS_DATE_LANGUAGE         AMERICAN                      
SQL> SELECT MONTHS_BETWEEN('01-MAY-08', '15-JAN-08') FROM DUAL;
MONTHS_BETWEEN('01-MAY-08','15-JAN-08')                
---------------------------------------                                                 3.5483871                  
SQL> SPOOL OFF
--------end

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7351078/viewspace-628646/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-11-22

  • 博文量
    24
  • 访问量
    147469