SQL> select next_day ( to_date ('2006-10-10','yyyy-mm-dd'),'TUESDAY') NEXT_DAY FROM DUAL;
select next_day ( to_date ('2006-10-10','yyyy-mm-dd'),'TUESDAY') NEXT_DAY FROM DUAL
*
ERROR at line 1:
ORA-01846: not a valid day of the week
我明明是按照書本上的語句來執行的,爲什麼會出錯呢?!
原因在於當前的語言環境是中文,它認不得英文!
這樣寫,就可以了:
-- 既然是中文日期,那我也用中文的寫法來表示
SQL> select next_day ( to_date ('2006-10-10','yyyy-mm-dd'),'星期二') NEXT_DAY FROM DUAL;
NEXT_DAY
----------
2006-10-17
或者改變當前會話的日期語言:
SQL> alter session set nls_date_language='american';
Session altered.
SQL> select next_day ( to_date ('2006-10-10','yyyy-mm-dd'),'TUESDAY') NEXT_DAY FROM DUAL;
NEXT_DAY
----------
2006-10-17
-- 除了設置NLS_DATE_LANGUAGE參數之外,還有另外一種辦法
-- 這種方法在任何日期語言環境下都適用!
-- 1表示星期日,2表示星期一,依此類推,最大爲7
SQL> select next_day(sysdate,2) from dual;
NEXT_DAY(S
----------
2007-04-23
SQL> alter session set nls_date_language='simplified chinese';
Session altered.
SQL> select next_day(sysdate,2) from dual;
NEXT_DAY(S
----------
2007-04-23