Azureなどのcloudサービスを使うとタイムゾーンが UTCって事がよくあります。
NOW()やCURRENT_TIME()の実行結果が9時間違う時はこのせいです。
mysqlの設定ファイルで日本時間に直してしまうのが王道ですが、ごにょごにょできない場合などapplication.iniで設定できます。
resources.db.adapter = "pdo_mysql" resources.db.params.host = resources.db.params.username = resources.db.params.password = resources.db.params.dbname = resources.db.params.charset = "utf8" resources.db.params.driver_options.1002 = "set time_zone = '+09:00'" resources.db.isDefaultTableAdapter = true resources.db.defaultMetadataCache =
resources.db.params.charset
とresources.db.params.driver_options.1002
は同時に設定できないので、同時に使う時は以下のように行います。
resources.db.params.driver_options.1002 = "SET NAMES 'utf8', CHARACTER SET 'utf8', time_zone = '+09:00'"
ちなみにtime_zoneの指定をAsia/Tokyo
にしたらダメだった。
これはサーバーに依存するのかな?
参考
[Php] application.iniでデータベースのタイムゾーンを設定する方法
MySQLのタイムゾーンを変更する
MySQLのTimeZoneをJSTからUTCに変更する
コメント