我想创建一个每天每小时创建的项目数组。
我正在跟踪人们的感受,所以我的模型被称为TrackMood
它只有一个名为mood
的列和时间戳。
如果我这样做
TrackMood.where(mood: "good").group("hour(created_at)").count
我得到类似的东西 {11 => 4,12 => 2,13 => 2,15 => 1}
我这里有2个问题
1如何将日期添加到此中,以便它不仅仅将昨天11点创建的项目添加到今天11点添加的项目中?
2如果没有创建任何内容,我如何确保0
显示几个小时?
答案 0 :(得分:10)
1)不要仅仅在日期的小时部分进行分组,而是需要对相关日期的一部分进行分组,即截至小时的日期,不包括任何更具体的日期。例如。
TrackMood.where(mood: "good").group("date_format(created_at, '%Y%m%d %H')").count
2)即使没有找到任何组,你总是会从这个电话中获得一个哈希值。如果您想查看有多少个群组,可以在其上调用.size
或.count
。
答案 1 :(得分:1)
对于PostgreSQL,您可以使用date_part