在Ruby中按月分组日期字段?

时间:2014-03-25 18:40:09

标签: ruby ruby-on-rails-3 activerecord group-by

我有一个日期字段(Model.expires_on),我需要按月对记录进行分组,并得到Model.amount字段的总和。我能做到:

Model.all.group(:expires_on).sum(:amount)

但是当我尝试按月分组时,我无法得到它。我试过了:

Model.all.group(:expires_on.month).sum(:amount)

1 个答案:

答案 0 :(得分:1)

对于Postgresql,这应该可行

 Model.group("date_part('month',expires_on)").select("date_part('month',expires_on) as expiration_month ,sum(amount) as sum_amount")

您可能也可以使用,具体取决于您的SQL提供程序,因为Postgresql没有月份功能

Model.group("MONTH(expires_on)").select("MONTH(expires_on) as expiration_month,sum(amount) as sum_amount")

此集合中的对象将响应expiration_monthsum_amount

知道这将结合所有月份而不管年份