【PostgreSQL】2つの日付の差を計算する自作関数

PostgreSQL自作関数

概要

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

 

他にもこんな関数があります(日付操作の関数)

日付を加算する(Date型)

日付であるかのチェック(IsDate)

西暦から和暦へ変換する

曜日を取得する

次の月曜日、火曜日、○曜日を求める(next_day関数)