月末の日付を求める、その月の同月、同時刻の末日日付を求める

syntax

LAST_DAY ( datetime )
return [ DATE ]

parameter

datetime日付式 (DATE 型)

return

  • 日付式 datetime の日にちの要素を同じ月の月末に変換する。

avail

  • SQL および PL/SQL の両方で使用可能。

LAST_DAY 関数の内容

日付式 datetime の日にちの要素を同じ月の月末に変換する。

時刻フィールド保存の仕様に注意

マニュアルには特に記載はないものの、日にちより以下の時、分、秒は datetime の値をそのまま継承する。データベースの日付項目を取得して、その日付を末日に変換 +1 日して「対象月」の条件として組み込んでいる場合などには時間項目を 日にち単位で切り捨て処理 を施さないと間違った検索結果になる可能性がある。

TIMESTAMP 型の引数に注意

日付式 datetime に TIMESTAMP 型を使用すると DATE 型に暗黙変換されて秒以下の情報を切り捨て(損失)する。

LAST_DAY 使用例

SQL> select dt, LAST_DAY(dt) from last_day_sample;
 
DT                  LAST_DAY(DT)
------------------- -------------------
2000-01-01 01:01:01 2000-01-31 01:01:01
2000-02-02 02:02:02 2000-02-29 02:02:02
SQL> select dt, LAST_DAY(dt),
  2         trunc(dt, 'month'),
  3         extract(day from LAST_DAY(dt)) from last_day_sample2;
 
DT                  LAST_DAY(DT)        TRUNC(DT,'MONTH')   EXTRACT(DAYFROMLAST_DAY(DT))
------------------- ------------------- ------------------- ----------------------------
2000-01-01 01:01:01 2000-01-31 01:01:01 2000-01-01 00:00:00                           31
2000-02-02 02:02:02 2000-02-29 02:02:02 2000-02-01 00:00:00                           29
2000-03-03 03:03:03 2000-03-31 03:03:03 2000-03-01 00:00:00                           31
2001-02-02 12:12:12 2001-02-28 12:12:12 2001-02-01 00:00:00                           28
2100-02-04 22:22:22 2100-02-28 22:22:22 2100-02-01 00:00:00                           28

日付要素を取り出す関数 / 日付の切り捨て

月初めを取得するには

月初めを取得するには TRUNC 関数 を使用すればよい。

FIRST_DAY ファンクション (月初めを取得)

P_DATE において月初の日付を戻す関数

CREATE OR REPLACE FUNCTION RIVUS.FIRST_DAY(P_DATE IN DATE)
RETURN DATE
IS
BEGIN
 	RETURN TRUNC(P_DATE, 'MONTH');
-- 	RETURN TRUNC(P_DATE, 'MM');
END;
 


SQL 関数 - LAST_DAY 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)