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表示倒數第三天,如果與員工入職時間相等,說明這個員工是當月倒數第三天入職的