oracle中next_day()、last_day()函数解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle中next_day()、last_day()函数解析
oracle中next_day()函数解析
Sql代码
当前时间的下⼀星期⼀的时间select next_day(sysdate,1) from dual
NEXT_DAY(date,char)
date参数为⽇期型,
char:为1~7或Monday/Mon~Sunday/
指定时间的下⼀个星期⼏(由char指定)所在的⽇期,
char也可⽤1~7替代,1表⽰星期⽇,2代表星期⼀等
还可以是星期⼀、星期⼆...、星期⽇
Sql代码
select next_day(sysdate,'星期⽇') from dual; --返回当前⽇期的星期⽇的⽇期和时间
Sql代码
SQL> select NEXT_DAY(sysdate, 'MONDAY ') FROM DUAL;
select NEXT_DAY(sysdate, 'MONDAY ') FROM DUAL
ORA-01846: 周中的⽇⽆效
这种情况是由于数据库语⾔是中⽂造成的。

show parameter nls_date_language;
如果返回的是simplified chinese,表⽰中⽂,中⽂是⽤“星期⼀”这种表⽰的。

要想⽤monday,tuesday这种英⽂表达,需要改写实例参数nls_date_language.
SQL> alter session set NLS_DATE_LANGUAGE = American;
Session altered
show parameter nls_date_language;
SQL> select NEXT_DAY(sysdate, 'MONDAY ') FROM DUAL;
SQL> select NEXT_DAY(sysdate,'MON') FROM DUAL;
上⾯两处查出来的⽇期是⼀样的,⽇期+当前系统时间就差时分秒不同⽽已
oracle中last_day()函数解析
last_day(某个⽇期) 返回特定⽇期所在⽉份的最后⼀天
select last_day(sysdate) from dual;---返回当前⽇期所在⽉份的最后⼀天的当前时间
例如:找出每个⽉倒数第三天⼊职的员⼯
SELECT * FROM EMP WHERE hiredate=last_day(hiredate)-2;
解释:hiredate表⽰雇员⼊职⽇期,last_day(hiredate)得到的是每个员⼯⼊职当有的最后⼀天,
-2表⽰倒数第三天,如果与员⼯⼊职时间相等,说明这个员⼯是当⽉倒数第三天⼊职的。

相关文档
最新文档