【PostgreSQL】2つの日付の差を計算する自作関数
概要
2つの日付(文字列)の差を計算します。
※ 標準の関数(age関数)を見たい場合はこちら
引数
引数1(character varying):日付文字列1 ※こちらが大きい(=直近の)日付の想定
引数2(character varying):日付文字列2
返り値
日付の差(数値)
コード
CREATE OR REPLACE FUNCTION datedif(
character varying,
character varying)
RETURNS integer AS
$BODY$
declare
a_date1 alias for $1; --引数1:日付文字列1
a_date2 alias for $2; --引数2:日付文字列2
begin
return cast(a_date1 as date) - cast(a_date2 as date);
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION datedif(character varying, character varying)
OWNER TO postgres;
実行例
--'20190910'と'20190901'の差を求める
select * From datedif('20190910','20190901'); -- 9
--'2019/9/10'と'2019/9/1'の差を求める
select * From datedif('2019/9/10','2019/9/1'); -- 9
--'20190930'と'20190901'の差を求める
select * From datedif('20190901','20190930'); -- -29