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

PostgreSQL構文

文字を日付に変換する

型を変換するにはcast(キャスト)を使用します。

日付への変換には「date」や「timestamp」を指定します。

-- 型を変換する
cast( A as B )  -- Aを型Bに変換する

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

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

-- 書式を設定する
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