【SQL】データベースのタイムゾーンを一時的に変える方法 UTCからJSTへ

sql

こんにちは。菜笑なえです。

今回は「SQLでデータベースのタイムゾーンを一時的に変える方法」についての解説です。

タイムゾーン確認, 変更から現在時刻の取得まで(コピペ用)

SHOW VARIABLES LIKE '%time_zone%';
SET SESSION time_zone = 'Asia/Tokyo';
SELECT NOW();

それぞれ以下で解説していきます。

  • SQLでのデータベースのタイムゾーン確認方法
  • SQLでのタイムゾーンを一時的に変更する方法
  • SQLでの現在時間の取得方法

SQLでのデータベースのタイムゾーン確認方法

SHOW VARIABLES LIKE '%time_zone%';

結果

Variable_nameValue
system_time_zoneUTC
time_zoneSYSTEM

システムのタイムゾーンはUTC
データベースのタイムゾーンはSYSTEM となっています。

システムのタイムゾーン = UTC なので、どちらもUTC が設定されているということです。

SQLでのタイムゾーンを一時的に変更する方法

SET SESSION time_zone = 'Asia/Tokyo';

結果

Variable_nameValue
system_time_zoneUTC
time_zoneAsia/Tokyo

システムのタイムゾーンは同じくUTC ですが
データベースのタイムゾーンはAsia/Tokyo となっています。

これで一時的にデータベースのタイムゾーンをUTC からJST に変更できました。

SQLでの現在時間の取得方法

SELECT NOW();

これで現在時刻の取得ができます。

この現在時刻はデータベースのタイムゾーンをみて結果を返してくれるます。

なので、UTCに設定されているときは2019-06-27 16:40:00 となりましたが
上記方法でJSTに変更すると2019-06-28 01:40:00 と日本時間が取得できます。

おわりに

今回はデータをUPDATEした際に、更新日時を日本時間で入れたかったので、一時的にタイムゾーンを変更しました。

他に「今このデータを流すときだけ、タイムゾーンを変えたい!」なんて人がいるかわかりませんが、そういう方の参考になれば幸いです。

SNS

Twitter:@nae310_
Instagram:310nae