目的
MySQLに保存しているミリ秒のUNIX時間のデータを日時の書式に変更したい。
ついでにタイムゾーンも変更したい。
例
AppStore 領収書の Latest_receipt_info
内の expires_date_ms
のようなデータなど。
※UNIXエポック(1970年1月1日午前0時0分0秒)からの経過ミリ秒で表現されている
想定テーブル
id | user_id | expires_date_ms |
---|---|---|
1 | 1 | 1601371107000 |
4 | 2 | 1601379940000 |
SQL例
SELECT
id, user_id,
CONVERT_TZ(FROM_UNIXTIME(expires_date_ms / 1000, '%Y-%m-%d %H:%i:%s'), '+00:00', '+09:00') AS expires_date_ms
FROM
hogehoges;
解説
項目 | 説明 |
---|---|
expires_date_ms / 1000 | ミリ秒を秒に変更 |
FROM_UNIXTIME(unix_timestamp, format) | UNIX時間を所定の書式に変更する |
CONVERT_TZ(dt, from_tz , to_tz) | タイムゾーンを変更 |
その他
Latest_receipt_info 内にはちゃんと日時で表現されている expires_date がある。
参考
MySQLでUNIXタイムスタンプと日付を相互変換するメモ
MySQLでミリ秒をDATE型に変換するSQL文
レスポンスボディ.Latest _receipt _info