如何在特定时间段内聚合activerecord模型数据?

时间:2010-05-14 02:13:42

标签: ruby-on-rails activerecord aggregate

我每隔~10秒从一个系统收集数据(这个时间差异因网络设备的通信时间而异)。我想每天计算这个activerecord模型的存储值的平均值和总和。所有记录都以UTC格式存储。

对于例如从美国东部时间午夜到午夜的前一天的总和和平均值的正确方法是什么?我可以在sql中执行此操作,但不知道进行此计算的“rails方式”。

1 个答案:

答案 0 :(得分:4)

试试这个:

tz = ActiveSupport::TimeZone.new("Eastern Time (US & Canada)")
range = 1.day.ago(tz.now).beginning_of_day..1.day.ago(tz.now).end_of_day
total = Model.sum(:column, :conditions => {created_at >= range})