68583


前回のpostgresql質問に似てますが解決しなかったので質問です。  
時間を表すカラム内の値「202007101010」  
このようにyyyymmddhhMI形式で刻まれた数値の文字列を  
'YYYY-MM-DD HH:MI'の文字型に変換して抽出したいと考えています。

202007101010が変換前であれば変換後には2020-07-10 10:10という値になります。

## 試したコード

[code]

    select to_timestamp(yyyymmddhh24miの数字列が格納されたカラム名,'YYYY-MM-DD HH24:MI') from テーブル名;
    
[/code]

## 発生しているエラー

[code]

    ERROR:  value for "YYYY" in source string is out of range
    DETAIL:  Value must be in the range -2147483648 to 2147483647.
    
    
[/code]

フォーマッティング関数など探しましたがどう当てはめればよいか解りませんでした。  
解る方いましたらご教授お願いします。


CC BY-SA 4.0
2020-07-14T07:44:23.743
68580
2020-07-14T11:25:20.480
2020-07-14T08:50:28.633
36855
36855
question
postgresql
postgresql内でyyyymmddHHMM形式の数字羅列(文字型)を'YYYY-MM-DD HH:MI'の文字型に変換して抽出したい


[`to_timestamp`](https://www.postgresql.jp/document/12/html/functions-
formatting.html)は日付文字列を **第二引数の文字列フォーマット** でtimestamp型に変換するものです。  
なので一旦文字列を`YYYYMMDDHH24MI`フォーマットでtimestamp型に置換した後に、`to_char`の
**第二引数の文字列フォーマット** の文字列に変換する2段階の処理が必要となります。

[code]

    select to_char(to_timestamp('202007101010', 'YYYYMMDDHH24MI'), 'YYYY-MM-DD HH24:MI')
    
[/code]


CC BY-SA 4.0
2020-07-14T09:18:39.390
68583
2020-07-14T09:18:39.390
9820
68580
answer


正規表現を使った文字列置換の例です。

[code]

    select REGEXP_REPLACE('202007142025', '(....)(..)(..)(..)(..)', '\1-\2-\3 \4:\5');
    
[/code]

結果

[code]

      regexp_replace
    ------------------
     2020-07-14 20:25
    (1 row)
    
[/code]


CC BY-SA 4.0
2020-07-14T11:25:20.480
68587
2020-07-14T11:25:20.480
35558
68580
answer