I want to find all records, say Posts, created today with Ruby on Rails, then all Posts created yesterday, and so on… how should I do?
Thank you,
Kevin
Try this:
#Today
Posts.find(:all, conditions: { :created_at => Date.today...Date.today + 1 })
#Yesterday
Posts.find(:all, conditions: { :created_at => Date.today - 1...Date.today })
Or this (preferable, in my opinion):
#Today
Posts.find(:all, conditions: ["DATE(created_at) = ?", Date.today] )
#Yesterday
Posts.find(:all, conditions: ["DATE(created_at) = ?", Date.today - 1] )
I recently discovered that Date.today can equal Date.tomorrow and Date.today can equal Date.yesterday depending on timezone set. Date.today uses box time (usually utc) and Date.tomorrow and yesterday use Time.zone so be careful. Date.current uses Time.zone and should be used in place of Date.today