日本のサービスを利用する限りはあんまりないと思うのですが、JST時刻をUTC時刻に変換したい時のコード

SELECT
  created_at,
  FORMAT_TIMESTAMP('%F %T UTC', TIMESTAMP_SUB(TIMESTAMP(created_at) , INTERVAL 9 HOUR)) as utc_at

>> created_at utc_at
>> 2023-01-01 09:30:00 2023-01-01 00:30:00 UTC

今回この珍しいコードが必要になった背景ですが、OSSのビジネスインテリジェンスツールであるMetabaseを使ったときに、データ上は UTCなんだけど、時刻情報を時系列グラフで描画すると、自動でJST変換されて表示されるという機能があった為です。

この場合は、JSTをUTCに戻してあげないと、表示上9時間ズレる。という状態になりました。

ツール側で良かれと思って変換されてるわけですが、その設定を知らない人が触ると事故が起きそう。と感じました。

おすすめの記事