在具有特定时区的rails中查询

时间:2017-04-14 16:44:52

标签: ruby-on-rails

我正在尝试使用我在应用程序中设置的时区进行查询,但查询始终按默认的UTC时区进行分组。如何使用配置文件中设置的时区?

我有以下代码:

trans = table.order("date(created_at)").group("date(created_at)").limit(30)
trans.count.each do |key,value|
  labels_array.push key
  sales_array.push value
end
trans.sum(:amount).each do |key,value|
  revenue_array.push value
end

1 个答案:

答案 0 :(得分:1)

我认为你设置了

# application.rb
config.time_zone = 'your timezone'

这是改变Rails时区但不是ActiveRecard(继续以UTC格式保存)。 如果你想改变ActiveRecord时区

# application.rb
config.time_zone = 'your timezone'
config.active_record.default_timezone = :local

我的观点 - 这并不是很糟糕,但我认为当系统处于UTC(数据库,缓存等)时这是一个很好的做法。

您可以使用SQL

分组您的时区
 #mysql example
.group("DATE(CONVERT_TZ(your_field, 'UTC','<name of time zone>'))")