Next_day()函数的用法

一、定义
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'

原文地址:https://www.cnblogs.com/newcityboy/p/11984314.html