【Rails】Time型で時間の条件だけを指定して取得
DBはSQLite3を使用
問題
id: 1, starttime: 2000-01-01 10:00:00 +0900 id: 2, starttime: 2000-01-01 10:00:00 +0900
このようなレコードがあった時に
Model.where(starttime: Time.parse("2000-01-01 10:00:00 +0900"))
ではid: 1
のみの取得となってしまった時があった。
調査
Model.find(1).starttime.to_i => 946688400 Model.find(2).starttime.to_i => 946688400
は両方同じものが返ってくる。 ということはDB側で値を比較する際に何かが起きている?
解決
とりあえずこれを
Model.where("time(starttime) == ?", Time.parse("2000-01-01 10:00:00").strftime('%H:%M:%S'))
と記述して、DB側で文字列化し、比較することによって両方とも取得ができた。 でもこれってDBの種類によって挙動が変わる可能性ないのかな?まだまだ調査が必要が感じがする。