タイトルの通り、mysqlのタイムゾーン設定方法です。
まずはmysqlのタイムゾーンの設定を確認します。
mysql> SHOW VARIABLES LIKE '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | UTC | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2016-08-18 23:16:51 | +---------------------+ 1 row in set (0.00 sec)
タイムゾーンはlinuxシステムの設定を使用しており、現在はUTCとなっています。
linuxのタイムゾーンを確認するとそのままUTCとなっております。
$ date Thu Aug 18 23:17:36 UTC 2016
まずはlinuxのタイムゾーンを日本時間に設定します。
$ cp /usr/share/zoneinfo/Japan /etc/localtime $ vi /etc/sysconfig/clock
「ZONE=”UTC”」となっているところを「ZONE=”Asia/Tokyo”」に変更します。
ZONE="Asia/Tokyo"
設定が変更されているのを確認します。
$ date Fri Aug 19 08:19:13 JST 2016
mysqlを再起動します。
$ /etc/init.d/mysqld restart
再度mysqlのタイムゾーンを確認します。
mysql> SHOW VARIABLES LIKE '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | JST | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2016-08-19 08:21:44 | +---------------------+ 1 row in set (0.00 sec)
タイムゾーンが日本時間になっています。
mysqlのタイムゾーンはデフォルトではlinuxのシステムを使用します。
このためlinuxのタイムゾーンを設定するだけで変更することができます。
本来であればmysql側の時刻を使用するのはあまりいいとは言えません。
理想的なのはアプリケーション側で時刻を設定しデータを投入することです。
今回はmysqlの簡単な利用を目的としているのでnow()を使用しました。