• 转:造成ORA01843 无效的月份 的一些原因


     

     

    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>

  • 相关阅读:
    通用Excel导入设计
    批量执行SQL文件
    ExtJS之对话框及窗口篇
    Windows Phone 7完整版模拟器
    C#迭代器
    XNA游戏开发之速度调整
    ExtJs之Panel篇
    Table锁定行列
    PB调用WebService示例(含源码)
    调用CodeSmith类库实现代码生成(含源码)
  • 原文地址:https://www.cnblogs.com/shlcn/p/2112887.html
Copyright © 2020-2023  润新知