こんにちは。菜笑なえです。
今回は「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した際に、更新日時を日本時間で入れたかったので、一時的にタイムゾーンを変更しました。
他に「今このデータを流すときだけ、タイムゾーンを変えたい!」なんて人がいるかわかりませんが、そういう方の参考になれば幸いです。
