ORA-01846错误解决办法

本文介绍了解决Oracle数据库中ORA-01846错误的方法,该错误通常发生在使用NEXT_DAY函数时。文章提供了两种解决方案:一是通过指定具体的数字来代替星期名称;二是更改会话参数NLS_DATE_LANGUAGE。

ORA-01846错误解决办法

select order#,orderdate,next_day(orderdate,'MONDAY') "Should Shipdate"

from orders

where order# = 1010;

执行上面的语句发现错误。

 

ORA-01846: 周中的日无效

oracle中关于时间拼写的参数(nls_date_language)设置有问题,改成下面的格式就没有错了,用数值1~7分别表示星期天道星期六。一周的第一天是从周天开始的。

SQL> select order#,orderdate,next_day(orderdate,2) "Should Shipdate"

  2  from orders

  3  where order# = 1010;

 

ORDER# ORDERDATE   Should Shipdate

------ ----------- ---------------

  1010 2009/4/3    2009/4/6

也可以修改参数然后在执行语句

SQL> alter session set nls_date_language='american';

Session altered

 

SQL> select order#,orderdate,next_day(orderdate,'MONDAY') "Should Shipdate"

  2  from orders

  3  where order# = 1010;

 

ORDER# ORDERDATE   Should Shipdate

------ ----------- ---------------

  1010 2009/4/3    2009/4/6

参考:

NLS_DATE_LANGUAGE specifies the language to use for the spelling of day and month

names and date abbreviations (a.m., p.m., AD, BC) returned by the TO_DATE and TO_CHAR 

functions

NLS_LANGUAGE specifies the default language of the database. This language is used 

for messages, day and month names, symbols for AD, BC, a.m., and p.m., and the default

sorting mechanism. This parameter also determines the default values of the parameters 

NLS_DATE_LANGUAGE and NLS_SORT. 

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

转载于:http://blog.itpub.net/26110315/viewspace-715727/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值