我遇到ActiveRecord查询问题。我想它与时区有关。 这是示例
date_start = Date.parse(params[:filter][:date_start]).beginning_of_day
date_end = Date.parse(params[:filter][:date_start]).end_of_day
data = MyModel.where("created_at>=? and created_at <=?", date_start, date_end)
如果是params params [:filter] [:date_start]是&#34; 10.07.16&#34;和params [:filter] [:date_end]是&#34; 15.07.16&#34; 结果查询中的日期将不正确。生成的日期将是[正确日期] - [区域时间差异]。所以2016-07-16 00:00为start_end我有2016-07-15 21:00
答案 0 :(得分:0)
有两种方法可以使用时区
Time.zone.now
和Time.now
而不是使用Date.parse
使用Time.zone.parse
。以下是获取时区日期的更多详细信息。使用不同的日期,您可以找到不同的值。
date_start = Time.zone.parse(params[:filter][:date_start]).beginning_of_day
date_end = Time.zone.parse(params[:filter][:date_start]).end_of_day
data = MyModel.where("created_at beween ? and ?", date_start, date_end)