Oracle的LAST_DAY函式

風靈使發表於2018-06-30

Oracle中last_day()函式的用法

last_day(time):返回指定日期所在月份的最後一天;

查詢當前月份的最後一天:

select last_day(sysdate) from dual;

查詢某天所在月份的最後一天:

select last_day(to_date('1992-10-09','yyyy-mm-dd')) from dual;

如:

查詢每一個月最後一天過生日的同學:

select * from stu where last_day(birthday) = birthday;

oracleLAST_DAY()函式

LAST_DAY函式返回指定日期對應月份的最後一天。

獲取當前日期的最後一天

SQL> SELECT last_day(SYSDATE) FROM dual;

執行結果:

LAST_DAY(SYSDATE)
-----------------
2016/12/31 15:39:

獲取當前日期和當前日期所在月的最後一天

SQL> SELECT SYSDATE,
          LAST_DAY(SYSDATE) "Last",
         LAST_DAY(SYSDATE) - SYSDATE "Days Left"
      FROM DUAL;

執行結果:

SYSDATE        Last            Days Left
-----------   -----------     ----------
2016/12/18    2016/12/31       13

獲取當前日期所在月的第一天和最後一天:

SQL> SELECT TRUNC(SYSDATE, 'MONTH') FIRSTDAY,
           LAST_DAY(TRUNC(SYSDATE, 'MONTH')) LASTDAY
        FROM DUAL;

執行結果:

FIRSTDAY       LASTDAY
-----------    -----------
2016/12/1      2016/12/31

其實這些日期函式我們通常都是用來巢狀使用的,例如下面這個例項:

求當前日期的上個月月初和上個月月末日期

SELECT 
    TRUNC(add_months(SYSDATE,-1),'mm') AS first_day
   ,last_day(add_months(SYSDATE,-1)) AS last_day
FROM dual;

執行結果:

FIRST_DAY     LAST_DAY
-----------   -----------
2016/11/1     2016/11/30

oracle substr,to_date,to_char,first_day,last_day用法

  • substr()擷取字串:如:2008-05-01 我要得到2008則可這樣子寫:
    substr('2008-05-01',1,4);
    擷取後的字串可以用||拼成一個新的字串:如:得到2008-1-1,可寫為:substr('2008-5-1',1,4)||'01-01';
  • to_date()可以將擷取後的字串轉換為相應的時間型別:('mystring','formatstring')正好是將string型別的字串轉換為時間物件,可以這樣寫:to_date(substr('2008-5-1',1,4)||'01-01'),yyyy-mm-dd);
  • to_char()函式恰好相反,是將物件型別轉換為相應的字元型別:如:to_char(to_date(substr('2008-5-1',1,4)||'01-01'),yyyy-mm-dd));查詢出來的將是一個字元型別.
  • first_day()得到一個月中的第一天:如first_day(to_date('2008-5-22','yyyy-mm-dd'))
    結果:2008-5-1
  • last_day()得到一個月最後的一天:如:last_day(to_date('2008-5-22','yyyy-mm-dd'))
    結果:2008-5-31

oracle函式大全 之 next_day last_day

格式:NEXT_DAY(DATE,WEEKDAY)NEXT_DAY(日期,星期幾)

NEXT_DAT函式返回輸入日期開始,未來最近的指定星期對應的日期,直接寫 ‘星期一’

例如:select next_day(sysdate,'星期一') from dual;

返回 當前時間之後的第一個星期一的時間(比如今天’7月18號0:01:01’,星期三,則返回’7月23號0:01:01’,自己數)

格式:last_day(date)last_day(某個日期)

select last_day(sysdate) from dual;

返回特定日期所在月份的最後一天

例如:找出每個月倒數第三天入職的員工

SELECT * FROM EMP WHERE last_day(hiredate)-2=hiredate;

解釋:last_day(hiredate)得到的是每個員工入職當有的最後一天,-2表示倒數第三天,如果與員工入職時間相等,說明這個員工是當月倒數第三天入職的

相關文章