ActiveRecord使ってMySQLの日付関数呼び出す時の注意

AWS+RDSでRailsを使ったりしてると、RDSのタイムゾーンUTCから変更できない関係で、けっこう時間の扱いに悩みます。

大抵の場合、application.rbに

config.time_zone = 'Tokyo'

とかやってお茶を濁すわけですが。

config.time_zoneはあくまでアプリケーション側の時間の扱いなので、DBのタイムゾーンを帰るわけではありません。

なので、date関数とか使うとUTC扱いになって困っちゃったりするわけです。

そういう場合はCONVERT_TZで無理くりJSTにします。

User.where("DATE(CONVERT_TZ(regist_day,\"+00:00\",\"+09:00\"))