前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >造成ORA-01843 无效的月份 的一些原因

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

作者头像
用户9184480
发布2024-12-17 12:59:44
发布2024-12-17 12:59:44
1050
举报
文章被收录于专栏:云计算linux

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>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档