曜日を取得する自作関数
引数の日付から曜日を取得する自作関数です。
使用する構文
曜日を取得するには「date_part」を使用します。
返り値は数値となるため、読みかえが必要です。(0=日 , 1=月 , 2=火 , 3=水 , 4=木 , 5=金 , 6=土)
--曜日を取得する ※ 'dow' = Day of Weekの略
date_part('dow', timestamp)
date_part('dow', date)
--使用例
select date_part('dow', now()); -- 3 (水曜日)
select date_part('dow', timestamp '2021/1/1'); -- 5(金曜日)
select date_part('dow', date '2021/2/1'); -- 1(月曜日)
引数
引数1(timestamp without time zone): 曜日を取得する日(タイムスタンプ)
返り値
日 , 月 , 火 , 水 , 木 , 金 , 土 の文字列
コード
CREATE OR REPLACE FUNCTION get_dayofweek(t_day timestamp without time zone)
RETURNS character varying AS
$BODY$
declare
c_dayofweek character varying;
begin
select case
when date_part('dow', t_day) = 0 then '日'
when date_part('dow', t_day) = 1 then '月'
when date_part('dow', t_day) = 2 then '火'
when date_part('dow', t_day) = 3 then '水'
when date_part('dow', t_day) = 4 then '木'
when date_part('dow', t_day) = 5 then '金'
when date_part('dow', t_day) = 6 then '土'
else
null
end into c_dayofweek;
return c_dayofweek;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
※ PostgreSQL9.5 , 9.6 , 10 , 11 , 12で動作確認済み 自作関数の実行方法はこちら
実行例(呼び出し例)
select get_dayofweek(timestamp '2021/01/01'); -- 金
select get_dayofweek(date '2021/1/10'); -- 日
関連記事
・現在日時、システム日時の取得
・日付の加算、週の加算、月の加算
・日付であるかのチェック(IsDate)【自作関数】
・2つの日付の差を計算する【自作関数】
・西暦から和暦へ変換する【自作関数】
・次の月曜日、火曜日、○曜日を求める(next_day関数)【自作関数】
・月末日を取得する(LAST_DAY)【自作関数】