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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM