【PostgreSQL】文字を日付に変換する、書式を設定する(cast、to_char)
文字を日付に変換する
型を変換するにはcast(キャスト)を使用します。
日付への変換には「date」や「timestamp」を指定します。
-- 型を変換する
cast( A as B ) -- Aを型Bに変換する
-- 文字列を日付(date)に変換する
cast( 日付に変換する文字列 as date )
-- 文字列を日付時刻(timestamp)に変換する
cast( 日付に変換する文字列 as timestamp )
-- 書式を設定する
to_char(日付・日付時刻, 書式)
あわせて読みたい
書式設定で使用しているto_char()はこちらで紹介しています
文字列を日付に変換する例
文字列 → 日付に変換する例
-- 1.文字列「20190401」を日付に変換する
select cast('20190401' as date); -- 2019-04-01
-- 2.文字列「20190401」をtimestampに変換する
select cast('20190401' as timestamp); -- 2019-04-01 00:00:00
-- 3.文字列「20190401 123456」をtimestampに変換する
select cast('20190401 123456' as timestamp); -- 2019-04-01 12:34:56
文字列 → 日付に変換 + 書式設定をする例
-- 1.「20190401」をdateに変換し、「YYYY/MM/DD」形式へ変換する
select to_char(cast('20190401' as date), 'YYYY/MM/DD');
-- 2019/04/01
-- 2.「20190401 123456」をtimestampに変換し、「HH24:MI:SS」形式へ変換する
select to_char(cast('20190401 123456' as timestamp), 'HH24:MI:SS');
-- 12:34:56
-- 3.「20190401 123456」をtimestampに変換し、「YYYY/MM/DD HH24:MI:SS」形式へ変換する
select to_char(cast('20190401 123456' as timestamp), 'YYYY/MM/DD HH24:MI:SS');
-- 2019/04/01 12:34:56
数値文字列を「yyyy/mm/dd」形式にする例
-- 「20190401」を、「YYYY/MM/DD」形式へ変換する
select left('20190401',4)
|| '/' || substring('20190401',5,2)
|| '/' || right('20190401',2) ;
-- 2019/04/01
数値を日付に変換する
数値 → 日付に変換する例です。
数値→日付へ直接変換するとエラーとなるため、数値→文字→dateの順で変換しています。
-- 1.数値「20190401」を日付に変換する
select cast(cast(20190401 as character varying(8)) as date);
-- 2019-04-01
-- 2.数値「20190401123456」を日付と時間に変換する(2行で1つの行です)
select cast(left(cast(20190401123456 as character varying(14)),8) || ' ' ||
right(cast(20190401123456 as character varying(14)),6) as timestamp);
-- 2019-04-01 12:34:56