在Rails中根据日期过滤记录

时间:2011-10-15 11:15:49

标签: ruby-on-rails

我正在尝试根据created_at的日期提交记录。

为此,我在日期格式中传递from_dateto_date日期选择器(例如"%y/%m/%d")。

请帮我解决如何在控制器中编写查询以获取日期之间的记录。

@users = User.where(['created_at = ? and created_at = ?',from_date,to_date])

感谢。

4 个答案:

答案 0 :(得分:5)

您可以使用范围语法,看起来更干净:

@users = User.where(:created_at => start_date.to_time..end_date.to_time)

答案 1 :(得分:2)

@users = User.where("created_at between (?) and (?)", start_date, end_date)

@users = User.where("created_at >= (?) AND created_at <= (?)", start_date, end_date)

或在最坏的情况下

@users = User.where("created_at between (?) and (?)", start_date.to_time, end_date.to_time)

答案 2 :(得分:1)

最好的解决方案是,它将包装日期从00:00:00小时和23:59:59

@users = User.where(created_at: from_date.beginning_of_day..to_date.end_of_day)

答案 3 :(得分:0)

这将100%有效。

starting_date_month = params[:date_from].split("-")[0].to_i
starting_date_year = params[:date_from].split("-")[1].to_i
ending_date_month = params[:date_to].split("-")[0].to_i
ending_date_year = params[:date_to].split("-")[1].to_i

records = self.where("extract(month from created_at) BETWEEN ? AND ? AND extract(year from created_at) between ? AND ? AND status = ? AND v_id = ?", starting_date_month,ending_date_month,starting_date_year,ending_date_year,6,params[:v_id])