OracleにあるファンクションがPostgreSQLでは用意されていない場合があるので自作します。
自作したファンクション
CREATE OR REPLACE FUNCTION LAST_DAY(DATE)
returns DATE as $$
BEGIN
return DATE(date_trunc('month',$1) + '1month' + '-1 Day');
END
$$ Language plpgsql;
- date_trunc()で与えられた日付を月単位で切り捨てて月初を取得
- 切り捨てて得た月初に1か月足す
- 最後に1日分引き算する
例) 2024-06-22 → 2024-06-01 → 2024-07-01 → 2024-06-30