gpt4 book ai didi

ruby-on-rails - ruby 如何按给定日期分组

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:24 25 4
gpt4 key购买 nike

我想每天查找注册计数,日期范围为本月。所以

starts_at = DateTime.now.beginning_of_month
ends_at = DateTime.now.end_of_month

dates = ((starts_at.to_date)..(ends_at.to_date)).to_a
dates.each_with_index do |date,i|
User.where("created_at >= ? and created_at <= ?", date, date.tomorrow)
end

如此接近 30 个查询运行,如何避免运行 30 个查询并在单个查询中完成?

我需要类似的东西

group_by(:created_at)

但是在 group by 中,如果没有特定日期的数据,它什么也不显示,但我需要日期并计为 0

我遵循了这个:

How do I group by day instead of date?

def group_by_criteria
created_at.to_date.to_s(:db)
end

User.all.group_by(&:group_by_criteria).map {|k,v| [k, v.length]}.sort

输出

[["2016-02-05", 5], ["2016-02-06", 12], ["2016-02-08", 6]]

没有 2016-02-05 的数据,因此它应该包含在计数 0 中

最佳答案

目前我无法对其进行测试,但应该可以过滤您的日期范围并在您的 dbms 的帮助下对其进行分组,如下所示:

User.select('DATE(created_at)').where("created_at >= ? and created_at <= ?", DateTime.now.beginning_of_month, DateTime.now.end_of_month).group('DATE(created_at)').count

关于ruby-on-rails - ruby 如何按给定日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com