Ruby on rails 选中RubyonRails中更新的_at in where子句的大于

Ruby on rails 选中RubyonRails中更新的_at in where子句的大于,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我在params中将更新为字符串。我使用将其转换为\u time updated_at = params["latest_updated_at"].to_time chat_history = ChatHistory.where('updated_at > ?',updated_at) 但它不能正常工作。它还可以在处获得一些

我在params中将
更新为字符串。我使用
将其转换为\u time

updated_at = params["latest_updated_at"].to_time
chat_history = ChatHistory.where('updated_at > ?',updated_at)
但它不能正常工作。它还可以在
处获得一些
更新


param的值类似于
“2016-03-17 18:06:36”

,因此这可能是一个时区问题。如果时间戳总是在同一时区中表示,则可以这样说:

ActiveSupport::TimeZone['America/Los_Angeles'].parse "2016-03-17 18:06:36"
这将为您提供一个
TimeWithZone
实例,您可以将其传递到
where
调用。(当然,将
America/Los_Angeles
更改为任何合适的方式。)如果您已将Rails配置为使用所需的时区,则快捷方式可能是
Time.zone.parse

如果时区可以根据当前用户的不同而变化,那么只需使用用户的首选项来获得正确的时区,然后使用它来解析字符串

顺便说一句,你在对你的问题的评论中得到了很多不好的建议:

  • 您不应该使用
    来确定日期
    ,因为这样您将丢失所有的分日分辨率。如果你没有正确地解释时区,你甚至可能不会选择正确的一天

  • 解析字符串,然后在_time_zone中调用
    ,没有任何作用,因为通过解析字符串,您已经在一个时区或另一个时区对其进行了解释
    在时区中
    不会改变时间的瞬间,只会改变你当时站的位置,因此也不会改变时间应该写为“太平洋下午5点”还是“中央下午6点”


下面是一些关于Rails中时区的一般建议,以及如何(由我)对它们进行推理:

对不起,我不知道你在问什么。你是说它不会得到“最低低于更新的”。您的意思是希望在参数
处更新后最早的
聊天历史记录
记录?或者别的什么?我更新了我的问题输入是什么?你得到了哪些错误的记录(发布了一些)?试着这样做
chat\u history=ChatHistory.where('updated\u at>?',updated\u at.to\u date.end\u of\u day)
而不是使用
to\u time
使用
to\u date
注意:当你问任何关于堆栈溢出的问题时,发布变量和输入值。我们也欢迎您提供一些示例,说明您打算做什么,以及您将得到什么。