1. joker1007
Changes in body
Source | HTML | Preview
@@ -15,11 +15,11 @@
- Railsのタイムゾーンと、Time.nowとTime.zone.now(Time.current)
- データベースのタイムゾーンとデータベースに記録されている時間。
おさらい、Time.zone.nowはActiveSupport::TimeWithZoneクラスのインスタンス。ActiveRecordでdatetime型のカラムにアクセスした場合もこれになる。
-ActiveRecordのdefault_timezoneはRailsではデフォルト値:utcだが、Rails以外でActiveRecordを利用する時は:localになるという良く分からない仕様
+ActiveRecordのdefault_timezoneデフォルト値:utc。
既に良く分からなくなってきた……。
ややこしいので、とりあえずデータベースは自分が良く使っているMySQLのみを考える。基本的にはMySQLに関する話だと思って欲しい。
@@ -95,9 +95,8 @@
既に時間がごっちゃに記録されていたら、まあ諦めてどっちかに合わせるしか無いかな……。
そもそも、こんなことで色々悩むのも、Railsのデフォルト設定値とMySQLのデフォルト設定値が噛み合ってない上にMySQLの時間カラムはタイムゾーン情報持ってないし、RailsはMySQLのタイムゾーンを無視するし、JDBCはタイムゾーン考慮して勝手に時間変換するしで、何が何の設定で何から何に時間を変換してるのかがさっぱり分からんからだ。
-大体、何でRailsで使う時にはActiveRecordのdefault_timezoneが:utcでそれ以外で使う時は:localなんだよ!(歴史的経緯っぽさあるけど……。
もう時差とかタイムゾーンの無い世界に行きたい……。
Postgresとかはカラム自体にタイムゾーン込みでデータ保持できるのかな。とすると、MySQLが無駄にややこしいだけ、という話にもなるが……。orz