こんにちは、さるまりんです。
PostgreSQLのテーブルでとあるものの利用開始日時と終了日時がエポックミリ秒で格納されているテーブルがありました。
クエリで取得してみるとこんな感じです。
salu=> select start_timestamp, end_timestamp from usage_periods limit 10;
start_timestamp | end_timestamp
-----------------+---------------
1631286000000 | 1632927600000
1630422000000 | 1632927600000
1630767600000 | 1630854000000
1617548400000 | 1617634800000
1615734000000 | 1618412340000
1622532713000 | 1625556733000
1626060296439 | 1635606000000
1623722071986 | 1907632484000
1630854000000 | 1725807600000
1630767600000 | 1633013940000
(10 rows)
が、これいつなの?とパッと見わからないです。
これを見た目でわかるように取得したいです。
そんな時はこうします。
to_char(to_timestamp([ミリ秒のデータ]/1000.0), '[書式の文字列]')
まず、カラムがミリ秒なので1000で割ります。そしてそれをtimestamp
にして、指定のフォーマットで文字列にします。
エポック秒なら1000で割る必要はありません。
こんな感じです。
上の結果をyyyy/mm/dd hh:mm:ssの文字列で取得しています。
salu=> select to_char(to_timestamp(start_timestamp / 1000.0), 'YYYY/MM/DD HH24:MI:SS') as start_dt, to_char(to_timestamp(end_timestamp / 1000.0), 'YYYY/MM/DD HH24:MI:SS') as end_dt from usage_periods limit 10;
start_dt | end_dt
---------------------+---------------------
2021/09/10 15:00:00 | 2021/09/29 15:00:00
2021/08/31 15:00:00 | 2021/09/29 15:00:00
2021/09/04 15:00:00 | 2021/09/05 15:00:00
2021/04/04 15:00:00 | 2021/04/05 15:00:00
2021/03/14 15:00:00 | 2021/04/14 14:59:00
2021/06/01 07:31:53 | 2021/07/06 07:32:13
2021/07/12 03:24:56 | 2021/10/30 15:00:00
2021/06/15 01:54:31 | 2030/06/14 01:54:44
2021/09/05 15:00:00 | 2024/09/08 15:00:00
2021/09/04 15:00:00 | 2021/09/30 14:59:00
(10 rows)
これだとパッと見て「いつ」かわかりますね。
コンピュータで扱いやすい形と人にとって優しい形、それを橋渡しできるのがプログラム。
どちらにも優しいプログラマを目指して頑張ります。
読んでくださってありがとうございました。
それではまた!