我的主机,使用PLSQL进行查询ORACLE语句中带时间格式的时候,不使用to_date进行转换,报ORA-01843错误
发布网友
发布时间:2022-05-19 02:24
我来回答
共2个回答
热心网友
时间:2024-03-03 06:51
造成ORA-01843 无效的月份 的一些原因
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 - Proction 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 - Proction
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Proction
greatfinish@ORA920> select to_date('JAN 01 1988','MON DD YYYY') from al;
select to_date('JAN 01 1988','MON DD YYYY') from al
*
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 al;
select to_date('JAN 01 1988','MON DD YYYY') from al
*
ERROR 位于第 1 行:
ORA-01843: 无效的月份
--查了一下sysdate发现原因了是客户端字符集问题
greatfinish@ORA920> select sysdate from al;
SYSDATE
------------
6月 21 2006
greatfinish@ORA920> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Proction
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Proction中断开
O:\>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
O:\>sqlplus greatfinish/finish
SQL*Plus: Release 9.2.0.1.0 - Proction 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 - Proction
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Proction
--修改完毕成功select
greatfinish@ORA920> select to_date('JAN 01 1988','MON DD YYYY') from al;
TO_DATE('
---------
01-JAN-88
greatfinish@ORA920>
热心网友
时间:2024-03-03 06:51
ORACLE的DATE类型的显示方式取决于NLS_DATE_FORMAT初始化参数
NLS_DATE_FORMAT参数可以在以下几个级别设置
1、数据库级别——如果希望所有人都看到某种格式的数据,则在SQLPLUS中运行 sql>alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss';
2、SESSION级别——如果只是希望自己看到某种格式而不影响其他人看到的结果 sql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
注意只是当前登录状态有效
我的主机,使用PLSQL进行查询ORACLE语句中带时间格式的时候,不使用to...
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的错误,这是因为客户端是中文环境,...
如何修改plsql日期显示格式
在控制面板的区域和语言设置里的,区域选项里的自定义-日期里面修改格式 plsql里的工具 首选项 sql窗口 日期字段 to_char去掉 ,还不行的话点下面的实例查询中的自动包含,多试几次就好了 参考资料 zol问答.zol问答[引用时间2018-1-5]
PLSQL中SQL语句怎样转换日期型函数为字符型?
to_char函数可以将日期值格式化为字符串; to_date函数将字符串按指定格式转换成日期值。在查询中, 将'2014/01/01'转换成日期值,然后再用作查询条件,这样会比较好。select ... where enddate < to_date('2014/01/01', 'yyyy/mm/dd')...
PLSQL中怎么转换时间格式?
1. add_months(日期,number) 指定日期推迟number个月;2. last_day(日期) 指定日期当月的最后一天;3. new_time(日期,时区简写) 调整时区;4. next_day(日期,number) number表示周几,星期日是1,指定number的日期(一周内或一周后);5. months_between(日期1,日期2) 日期1和日期2之间有...
在ORACLE中怎么对LONG类型字段的模糊查询
12.根据Oracle的建议,应该避免再使用LONG类型。如果可能应该使用TO_LOB来重建表,将表中的LONG类型转化为CLOB或BLOB类型。13.这里就不考虑这种方法了,只是讨论一下对于不能重建的表如何进行查询。14.如果表中的数据长度不超过32K的话,可以考虑通过类似下面的PL/SQL代码来实现:15.SQL> SET SERVEROUT ...
oracle plsql 如何查询两个间隔日期之间的数据,如查询2013-1-2 19...
select * from emp where to_char(hiredate,'yyyy-MM-dd hh:mm:ss')>='2013-1-2 19:00' and to_char(hiredate,'yyyy-MM-dd hh:mm:ss')<='2013-1-2 21:00' ;其中hiredate是日期字段。
PLSQL中的日期转换格式有哪些,具体怎么实现
日期转换主要有两种一种是把日期类型转换为指定字符格式,使用to_char(date,'yyyymmdd hh:mi:ss');还有一种就是把字符转换为日期格式使用to_date
plsql 日期时间格式
不知道你要什么,简要的说一下oracle日期直接量的写法希望对你有帮助:日期: date '2010-07-07'日期时间: timestamp '2010-07-07 13:38:00'其他的字符串转换为日期的可以使用to_date函数,具体用法参考oracle的帮助或上网查一下
oracle如何按时间格式查询
1、打开常用PLSQL Developer工具,输入登录信息。如图所示:2、完成以上操作后,要在工具中新建SQL窗口,如图:3、打开新建SQL的窗口,打开是空白是正常情况。如图:4、然后日期createdatetime,日期型字段类型如下:5、输入如下语句,从表table123进行查询,如图所示:6、点击查询按钮,进行查询操作,这样就...
oracle 数据库查询脚本 plsql
create table a(姓名 varchar2(10),状态 int,更新时间 date,内容 varchar2(20));insert into a values ('张三',1,to_date('2015-01-02','yyyy-mm-dd'),'测试数据1');insert into a values ('李四',1,to_date('2015-01-02','yyyy-mm-dd'),'测试数据2');insert into a values...