【PostgreSQL】文字を日付に変換する、書式を設定する(cast、to_char)

2020年6月21日

スポンサーリンク

構文

型の変換には「cast」を使用します。「as」の後ろに変換したい型を入れます。

--文字列を日付に変換する
cast( 日付に変換する文字列 as date )

 

文字を日付に変換する

文字を日付に変換する

--1.文字列「20190401」を日付に変換する 
select * from cast('20190401' as date);              --2019-04-01 

--2.文字列「20190401」をtimestampに変換する 
select * from cast('20190401' as timestamp);         --2019-04-01 00:00:00 

--3.文字列「20190401 123456」をtimestampに変換する 
select * from cast('20190401 123456' as timestamp);  --2019-04-01 12:34:56 

--4.文字列「20190401 123456」をtimestampに変換し、「YYYY/MM/DD」形式へ変換する
select * from to_char(cast('20190401 123456' as timestamp), 'YYYY/MM/DD'); 
--2019-04-01 12:34:56

 

文字をtimestampに変換し日付書式を設定する

--1.「20190401 123456」をtimestampに変換し、「YYYY/MM/DD」形式へ変換する
select * from to_char(cast('20190401 123456' as timestamp), 'YYYY/MM/DD');  --2019/04/01 

--2.「20190401 123456」をtimestampに変換し、「HH24:MI:SS」形式へ変換する
select * from to_char(cast('20190401 123456' as timestamp), 'HH24:MI:SS'); --12:34:56

--3.「20190401 123456」をtimestampに変換し、3日を加え、「HH24:MI:SS」形式へ変換する
select * from to_char(cast('20190401 123456' as timestamp) + interval '3 days' , 'YYYY/MM/DD'); 
--2019/04/04

--4.「20190401 123456」をtimestampに変換し、30分を加え、「HH24:MI:SS」形式へ変換する
select * from to_char(cast('20190401 123456' as timestamp) + interval '30 minutes' , 'HH24:MI:SS'); 
--13:04:56

 

日付書式を設定する

--1.現在日時を「YYYY/MM/DD」形式へ
select * from to_char(current_timestamp, 'YYYY/MM/DD'); --2019/10/07

--2.現在日時を「'HH24:MI:SS'(24時間表記)」形式へ
select * from to_char(current_timestamp, 'HH24:MI:SS'); --23:03:06

--3.現在日時を「'YYYY/MM/DD HH24:MI:SS'(24時間表記)」形式へ
select * from to_char(current_timestamp, 'YYYY/MM/DD HH24:MI:SS'); --2019/10/07 23:03:06

--4.現在日時を「AM、PMの表記」+'HH24:MI:SS'(12時間表記)形式へ
select * from to_char(current_timestamp, 'AMHH12:MI:SS'); --PM11:03:34

 

数値を日付に変換する

--1.数値「20190401」を日付に変換する
select * From cast(cast(20190401 as character varying(8)) as date);
--2019-04-01

--2.数値「20190401123456」を日付と時間に変換する
select * From 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

 

曜日を取得する

--1.現在日時の曜日を取得
--月:"Monday" , 火:"Tuesday", 水:"Wednesday", 木:"Thursday", 金:"Friday", 土:"Saturday", 日:"Monday"
select * from trim(to_char(current_timestamp, 'Day')); --Monday

--2.現在日時の曜日を取得 --月:1 , 火:2, 水:3, 木:4, 金:5, 土:6, 日:7 
select * from date_part('dow', current_timestamp); --1