12490


RailsのActiveRecordで2015年7月に作成されたデータを検索したい場合にはどうしたらよいのでしょうか。

また、さらに詳しく2015年7月20日に作成された日、などの検索の仕方を教えていただけるとたすかります。


CC BY-SA 3.0
2015-07-19T15:47:48.453
12487
2015-07-19T19:25:35.240
2015-07-19T19:25:35.240
85
9149
question
ruby-on-rails ruby rails-activerecord
RailsのActiveRecordでcreated_atを検索したい


僕ならこんな感じでやりますね。

[code]

    User.where(created_at: "2015-07-01".in_time_zone.all_month)
    # SQL => SELECT "users".* FROM "users"  WHERE ("users"."created_at" BETWEEN '2015-07-01 00:00:00.000000' AND '2015-07-31 23:59:59.999999')
    
    User.where(created_at: "2015-07-20".in_time_zone.all_day)
    # SQL => SELECT "users".* FROM "users"  WHERE ("users"."created_at" BETWEEN '2015-07-20 00:00:00.000000' AND '2015-07-20 23:59:59.999999')
    
[/code]

ちなみにデータの件数が何万件もあるような場合だと検索に時間がかかるので created_at にインデックスを貼っておくのが良いと思います。


CC BY-SA 3.0
2015-07-19T19:25:02.657
12490
2015-07-19T19:25:02.657
85
12487
answer