【PostgreSQL】日付であるかのチェック(IsDate)
日付であるかのチェック(IsDate)
特定の文字列が日付であるかチェックします(=日付に変換できるかをチェックします)
引数
引数1(character varying): チェックする文字列
返り値
true:日付である false:日付でない
コード
CREATE OR REPLACE FUNCTION isdate(c_day character varying)
RETURNS boolean AS
$BODY$
declare
d_temp date; --一時変数
BEGIN
select cast(c_day as date) into d_temp;
--castできる時はtrueでリターン
return TRUE;
EXCEPTION
WHEN OTHERS THEN
--castできずエラーになる時はfalseでリターン
return FALSE;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
※PostgreSQL9.5 , 9.6 , 10 , 11 , 12で動作確認済み 自作関数の実行方法はこちら
実行例
select isdate('20190101'); -- true
select isdate('2019/01/01'); -- true
select isdate('abc'); -- false
select isdate('20190132'); -- false(存在しない日付はfalseとなる)
関連記事
・文字を日付に変換する、書式を設定する(cast、to_char、to_date)
・timestampのwithout time zoneとwith time zoneの違い
・次の月曜日、火曜日、○曜日を求める(next_day関数)【自作関数】