【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"