Open2

AWS上のMySQLでtimezoneを設定する

Koichi IidaKoichi Iida

AWS上に構築しているMySQL(RDS)の時刻フィールドがUTCになっているので、それを日本時間になるようにしたい。
色々と調べていると、下記の対応方法が見つかった。

  1. php.iniの設定項目を追加する。
date.timezone = "Asia/Tokyo"

とする。
→この方法が設定されていてもうまくいかない。PHP側で取得するとUTCの時刻になってしまう。

  1. phpでの実装側で、タイムゾーンを指定する。
    方法1:MySQLアクセス用のconnection生成時に設定する。
// クエリ発行前にSET time_zoneで設定する
$connection->query("SET time_zone = '+09:00'");

方法2:MySQLアクセス用のセッション前にdate_default_timezone_set()を実行する。

date_default_timezone_set('Asia/Tokyo');

→この方法が設定されていると、テーブルのフィールドがtimezone型である場合は保存がUTCの時刻であっても、取得時にうまく日本時間に変換してくれる。
ただ、datetime側のフィールドについては日本時間に変換してくれない。

Koichi IidaKoichi Iida
  1. AWSのMySQLのパラメータグループを新規作成し、使っているMySQLに適用する。