【问题标题】:How to group records on basis of specific date range?如何根据特定日期范围对记录进行分组?
【发布时间】:2019-07-29 09:01:48
【问题描述】:

需要在特定日期范围内按天对记录进行分组?我的意思是我有两个日期:开始日期和结束日期,在该日期之间我需要按天分组记录。例如:日期范围:06-11-2019 和 07-15-2019 现在我需要分组中的所有记录:[日期:06-11-2019,计数:5],[日期:06-12-2019,计数: 5],[日期:06-13-2019,计数:5],[日期:06-14-2019,计数:5],[日期:06-15-2019,计数:5]

【问题讨论】:

  • 使用group_by。例如:Array.group_by {|i| i == "something"}。见link
  • group_by 不是 active_records 方法

标签: ruby-on-rails group-by


【解决方案1】:

groupdate 是适合您的场景考虑的好宝石。

你可以像下面这样写你的查询,

User.where("created_at > :start_date and created_at < :end_date", start_date: "Your start date here", end_date: "Your end date here").group_by_day(:created_at).count

这里我考虑过created_at 列作为分组依据,但您可以使用任何所需的日期时间列。

【讨论】:

  • 即使记录数为零,我也需要包含 start_date 和 end_date 作为响应
  • 那么你应该在查询中使用=。
【解决方案2】:

您可以使用 ActiveRecord 组方法来做到这一点,例如:

def all_users_by_date
    ["date: #{User.group("DATE(created_at)").first} count: #{User.count(:group => 'date(created_at)')}"]
end

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2016-12-08
    • 1970-01-01
    • 2021-12-05
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多