こんにちは。菜笑なえです。
今回は「SQLでデータベースのタイムゾーンを一時的に変える方法」についての解説です。
目次
タイムゾーン確認, 変更から現在時刻の取得まで(コピペ用)
SHOW VARIABLES LIKE '%time_zone%';
SET SESSION time_zone = 'Asia/Tokyo';
SELECT NOW();
それぞれ以下で解説していきます。
- SQLでのデータベースのタイムゾーン確認方法
- SQLでのタイムゾーンを一時的に変更する方法
- SQLでの現在時間の取得方法
SQLでのデータベースのタイムゾーン確認方法
SHOW VARIABLES LIKE '%time_zone%';
結果
Variable_name | Value |
---|---|
system_time_zone | UTC |
time_zone | SYSTEM |
システムのタイムゾーンはUTC
データベースのタイムゾーンはSYSTEM
となっています。
システムのタイムゾーン = UTC
なので、どちらもUTC
が設定されているということです。
SQLでのタイムゾーンを一時的に変更する方法
SET SESSION time_zone = 'Asia/Tokyo';
結果
Variable_name | Value |
---|---|
system_time_zone | UTC |
time_zone | Asia/Tokyo |
システムのタイムゾーンは同じくUTC
ですが
データベースのタイムゾーンはAsia/Tokyo
となっています。
これで一時的にデータベースのタイムゾーンをUTC
からJST
に変更できました。
SQLでの現在時間の取得方法
SELECT NOW();
これで現在時刻の取得ができます。
この現在時刻はデータベースのタイムゾーンをみて結果を返してくれるます。
なので、UTCに設定されているときは2019-06-27 16:40:00
となりましたが
上記方法でJSTに変更すると2019-06-28 01:40:00
と日本時間が取得できます。
おわりに
今回はデータをUPDATEした際に、更新日時を日本時間で入れたかったので、一時的にタイムゾーンを変更しました。
他に「今このデータを流すときだけ、タイムゾーンを変えたい!」なんて人がいるかわかりませんが、そういう方の参考になれば幸いです。