2026
March
27
作っておくと便利なpostgresqlの自作関数
業務上でたびたび必要になり作ってよかった自作関数があるので今回は3点紹介します。
※この記事はPostgreSQL 16.11 で動作確認してます。
・last_day(日付)
引数の日付の月末日を取得する関数です。
例
SELECT last_day(CURRENT_DATE) ;
結果
2026/03/31CREATE OR REPLACE FUNCTION "public"."last_day"("datdate" date)
RETURNS "pg_catalog"."date" AS $BODY$
BEGIN
return date(DATE_TRUNC('month', $1) + '1 month' +'-1 Day');
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
;・num_only(文字列)
引数で指定した文字列から数字のみ抽出して出力します。
例
SELECT num_only('abc123あいう456');
結果
123456CREATE OR REPLACE FUNCTION "public"."num_only"("p_src" text)
RETURNS "pg_catalog"."text" AS $BODY$
declare
text_result text;
begin
--引数を半角数字のみにして返す。全角数字も半角数字にする。NULLは空文字にする
if p_src is null or p_src = '' then
return '';
end if;
text_result := translate(p_src,'1234567890','1234567890');
text_result := translate(text_result,translate(p_src,'1234567890',''),'');
return text_result;
end;
$BODY$
LANGUAGE plpgsql IMMUTABLE
COST 100
;・isvaliddate(文字列)
文字列が日付かどうか判定する。
postgresqlには日付かどうかを判定する関数がないので自作します。
例
SELECT isvaliddate('2026/02/30');
結果
FALSECREATE OR REPLACE FUNCTION "public"."isvaliddate"(text)
RETURNS "pg_catalog"."bool" AS $BODY$
BEGIN
PERFORM $1 :: date ;
RETURN TRUE ;
EXCEPTION WHEN OTHERS THEN
RETURN FALSE ;
END ;
$BODY$
LANGUAGE plpgsql IMMUTABLE
COST 100
以上。業務で使用する頻度が高い3つの自作関数でした。
参考になれば幸いです。
このカテゴリの最新記事
2025.05.22
【PostgreSQL】PostgreSQL用の自己署名証明書作成とSSL認証の設定方法
2023.04.10
PHPで文字化けを解消する方法(mb_convert_encoding)
2025.07.14
Dockerで立ち上げたローカル環境のWebサイトにスマホからアクセスする方法
2024.10.17
Laravel Mix(webpack)からViteに移行してみた