ORA-01846錯誤解決辦法

pingley發表於2012-02-06

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章