【PostgreSQL】月末日を取得する(LAST_DAY)

2020年11月21日PostgreSQL自作関数

スポンサーリンク

月末日を取得する(LAST_DAY)

対象の日付から、月末の日を取得します。

例:2020/01/01を指定すると、2020/01/31が返ります。

 

使っている構文

この関数では主に次の2つの構文を使っています。

①月の最初の日を取得する

date_trunc('month',日付・タイムスタンプ)  -- 日付に対し、月の最初の日を取得する

 

②月、日付を加算する

select current_date + cast('5 months' as INTERVAL);  --"2020-11-12 00:00:00"
select current_date + cast('5 days' as INTERVAL);    --"2020-06-17 00:00:00"

 

引数

引数1(timestamp with time zone):月末を取得するタイムスタンプ

 

返り値

月末の日付(Date型)

 

コード

CREATE OR REPLACE FUNCTION last_day(timestamp with time zone)
  RETURNS date AS
$BODY$
declare
begin
    --引数の月の最初の日を取得、+1月して、-1日することにより月末を取得する
	return date(DATE_TRUNC('month', $1) + '1 month' +'-1 Day');
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION last_day(timestamp with time zone)
  OWNER TO postgres;

※ PostgreSQL9.5 , 9.6 , 10 , 11 , 12で動作確認済み 自作関数の実行方法はこちら

 

実行例

select * from last_day(now());  --2019-09-30
select * from last_day(cast('2020/01/01' as date)); --2020-01-31

 

PostgreSQLの構文まとめを書いています

入門~経験者まで「基本構文・こんな時どう書くんだっけ?」のまとめ