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'