【MySQL】タイムゾーンをコマンドで日本時間に変更する

困ったこと

update table1
set column1 = NOW(); //UTCの時間になる

NOW関数を使うとなぜか9時間前の時間が取得されてしまう事態に遭遇。

解決法

調べたらMySQLのタイムゾーンがUTCになっているのが原因だった。

set time_zone = '+09:00';
select NOW(); //JSTの時間になる

そこでタイムゾーンを9時間後に設定してあげたら解決。

セッションごとにsetしてあげる必要はあるが、無事に日本時間(JST)を取得できるようになった。

[mysqld]
default-time-zone = 'Asia/Tokyo'

ちなみに/etc/my.cnfにて設定を直接変更する方法もあるらしい。

1

参考
  1. MySQLでタイムゾーンを設定する - Qiita