Rails,日期时间字段中的日期搜索查询。为什么这个不起作用?

时间:2012-04-17 08:33:07

标签: ruby-on-rails ruby-on-rails-3.1

我是这个Rails世界的新手,很抱歉,如果错误太明显了。

我正在构建一个搜索表单。我设法比较字符串。然而,我正在努力与日期。

形式如下:

= select_datetime Date.today, :prefix => :search_start_date

这是我正在尝试的查询(注意:事件中有效列中的start_date)

 @events = @events.where("start_date > ?", "%#{params[:search_start_date]}%")

因为一个是约会而另一个是约会时间我虽然不得不施展它们。然而,我所尝试的一切都没有效果。

有什么建议吗?感谢

3 个答案:

答案 0 :(得分:1)

您可以将params放在Time对象中:

@time = Time.new(params[:search_start_date][:year], params[:search_start_date][:month],params[:search_start_date][:day] , params[:search_start_date][:hour], params[:search_start_date][:minute])
@events = Event.where("start_date > ?", @time)

它应该工作。但是,您应该将start_date设置为datetime类型。确实如果您的活动日期为2012年4月17日,并且您正在寻找在2012年4月17日9:00之后开始的活动,则活动将不会显示。只会显示4月18日及之后开始的活动。

答案 1 :(得分:0)

你可以尝试一下它会给你带来更好的结果

 @time = params[:search_start_date]+" "+"00:00:00"

 @events = @events.where("start_date > ?", @time)

尝试它,它会让你的时间大于00:00:00

答案 2 :(得分:0)

尝试使用解析:

 @events = @events.where("start_date > ?", "%#{Date.parse(params[:search_start_date])}%") if !params[:search_start_date].nil?