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

举报
tea_year 发表于 2021/12/29 22:40:37 2021/12/29
【摘要】 视频课:https://edu.csdn.net/course/play/7940 1) 当我们在一个中文环境的客户端使用如下sql语句 INSERT INTO "temptable" ( DELIVER_DATE ) VALUES (TO_DATE('27-Jun-2007 15:57:30', 'DD-MON-YYYY H...

视频课:https://edu.csdn.net/course/play/7940

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>

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/56045200

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。