關於日期函數next_day()的使用

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章