一、定義
NEXT_DAY(date,char)
date參數為日期型,
char:為1~7或Monday/Mon~Sunday/
指定時間的下一個星期幾(由char指定)所在的日期,
char也可用1~7替代,1表示星期日,2代表星期一。。。。
還可以是星期一、星期二。。。星期日,即 monday,thusday.....(看是什么字符集的)
格式:NEXT_DAY(DATE,WEEKDAY) 即 NEXT_DAY(日期,星期幾)
NEXT_DAT函數返回輸入日期開始,緊隨其后的指定星期對應的日期,weekday可以用全稱,也可以用縮寫(如'monday','tuesday','wed')
例:next_day(to_date('1999.11.24','yyyy.mm.dd'),'friday') 返回 1999年11月26日
例:next_day(to_date('1999.11.24','yyyy.mm.dd'),'wed') 返回 1999年11月01日
注:1999年11月24日是星期三,第二個參數是星期五,是兩天后。第二個例子由於日期正好是星期三,只能用下一個星期三日期。
二、用法
1、select next_day(sysdate,1) from dual;
或者select NEXT_DAY (sysdate, 'MONDAY ') FROM DUAL;
求當前系統時間的下一星期一的時間,若報錯現實“周中的日無效”,是因為字符集的問題,說明你的oracle的字符集是簡體中文的,即:simplified chinese的
可以設置字符集
alter session set NLS_DATE_LANGUAGE = American; 將當前對話改為英文。
或者
select next_day(sysdate,'星期一') from dual;即可
2、select next_day('01-Aug-03', 'TUESDAY') from dual;
查詢距03年8月1日的下一個周二。同樣有字符集的問題。
注意:
如果今天是星期二,如果要查詢下一個星期二,則為下周的星期二;如果要查詢下一個星期三,要注意,返回值是這個周的星期三,強烈建議大家試一下,最能說明問題.從查詢下一個周三開始,到下一個周六,返回的值都是這個周的周三到周六。
如果要把日期語言修改為簡體中文命令如下,注意要把SIMPLIFIED CHINESE用單引號括起來,因為空格不屬於合法的標識符.
alter SESSION set NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE'