【PostgreSQL】年月日の文字列から日付を作成する

PostgreSQL自作関数

説明

年月日の文字列から日付を作成する

 

引数

引数1(character varying):文字列(年)

引数2(character varying):文字列(月)

引数3(character varying):文字列(日)

 

返り値

文字から作った日付(数値に変換できなかった時はNullが返ります)

 

コード

CREATE OR REPLACE FUNCTION get_char_to_date(
    character varying,
    character varying,
    character varying)
  RETURNS date AS
$BODY$
declare

	c_year		alias for $1;	--引数1:文字列(年)
	c_month		alias for $2;	--引数2:文字列(月)
	c_day		alias for $3;	--引数3:文字列(日)

	c_temp		character varying;
	d_temp		character varying;
	c_execute	character varying;

begin

	--yyyy/mm/ddの文字列を作成
	c_temp = c_year || '/' || c_month || '/' || c_day;

	--日付変換できるかチェック
	c_execute := 'SELECT date(''' || c_temp || ''')';
 
	EXECUTE c_execute INTO d_temp;
	--日付だったらそのまま返す
	return d_temp;
	EXCEPTION
	WHEN OTHERS THEN
	--日付でなかったらnullで返す
	return null;

end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION get_char_to_date(character varying, character varying, character varying)
  OWNER TO postgres;

※PostgreSQL12で動作確認済み

 

実行例

select * from get_char_to_date('2019','4','1');
--"2019-04-01"