【PostgreSQL】西暦から和暦へ変換する

2020年7月15日

スポンサーリンク

説明

西暦から和暦へ変換します。

 

引数

引数1(date):変換する日付

 

返り値

和暦(和暦の頭文字+年月日)

例:1987/9/1 ⇒ S620901

 

コード

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

begin

	--$1:引数(変換する日付)
	if $1 > '20190430' then
		--令和
		return 'R' || cast(to_char(cast($1 as date),'YYYYMMDD') as numeric) - 20180000;
	elseif $1 > '19890107' then
		--平成
		return 'H' || cast(to_char(cast($1 as date),'YYYYMMDD') as numeric) - 19880000;
	elseif $1 > '19261224' then
		--昭和
		return 'S' || cast(to_char(cast($1 as date),'YYYYMMDD') as numeric) - 19250000;
	elseif $1 > '19120729' then
		--大正
		return 'T' || cast(to_char(cast($1 as date),'YYYYMMDD') as numeric) - 19110000;
	elseif $1 > '18680124' then
		--明治
		return 'M' || cast(to_char(cast($1 as date),'YYYYMMDD') as numeric) - 18670000;
	end if;

	return null;
    
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION convert_seireki_to_wareki(date)
  OWNER TO postgres;

※PostgreSQL9.5 , 9.6 , 10 , 11 , 12で動作確認済み 自作関数の実行方法はこちら

 

実行例

select * From convert_seireki_to_wareki('1950/1/1');  --"S250101"

select * From convert_seireki_to_wareki('2000/1/1');  --"H120101"

 

PostgreSQLの構文まとめを書いています

入門~経験者まで「基本構文・こんな時どう書くんだっけ?」のまとめ