Ruby on rails Rails,从datetime字段进行日期搜索查询。为什么这个不行?

Ruby on rails Rails,从datetime字段进行日期搜索查询。为什么这个不行?,ruby-on-rails,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3.1,我是Rails的新手,如果这个错误太明显,我很抱歉 我正在建立一个搜索表单。我设法比较了字符串。然而,我正在与日期斗争 其形式如下: = select_datetime Date.today, :prefix => :search_start_date 这是我正在尝试的查询(注意:事件中有效列中的开始日期) 因为一个是约会,另一个是约会时间,我想我必须投下它们。然而,我尝试过的一切都不起作用 有什么建议吗?谢谢你能试试这个吗?它会给你更好的效果 @time = params[:sear

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

我正在建立一个搜索表单。我设法比较了字符串。然而,我正在与日期斗争

其形式如下:

= select_datetime Date.today, :prefix => :search_start_date
这是我正在尝试的查询(注意:事件中有效列中的开始日期)

因为一个是约会,另一个是约会时间,我想我必须投下它们。然而,我尝试过的一切都不起作用


有什么建议吗?谢谢

你能试试这个吗?它会给你更好的效果

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

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

尝试它,它会让您在时间大于00:00:00时重新登录。您可以将参数放入时间对象中:

@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)
它应该会起作用。但是,您应该使用datetime类型设置开始日期。事实上,如果您有一个日期为2012年4月17日的事件,并且您正在查找2012年4月17日9:00之后开始的@events,则不会显示该事件。将仅显示从4月18日开始及之后的事件。

尝试使用解析:

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

这很有效。使用您制作的示例,如果我在2012年4月17日的搜索中键入,它将检索同一天的所有事件。很高兴知道!最后你采取了什么解决方案?我抛出了这个错误。未定义的{“日”=>“17”、“月”=>“4”、“年”=>“2012”}方法“+”:ActiveSupport::HashWithInferenceAccessMMMH。。。这就抛出了这个错误。未定义的方法'gsub!'对于{“day”=>“18”,“month”=>“4”,“year”=>“2012”}:ActiveSupport::HashWithInferenceAccess
 @events = @events.where("start_date > ?", "%#{Date.parse(params[:search_start_date])}%") if !params[:search_start_date].nil?