为 created_at 列按一天中的小时分组的 Rails [英] Rails group by hour of the day for created_at column

查看:53
本文介绍了为 created_at 列按一天中的小时分组的 Rails的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 订阅模型 并且想按一天中的小时分组.我检查过rails 按 created_at 的日期对记录进行分组rails - 按天和小时分组但没有运气!>

I have a Subscribe Model and want to group by hour of day. I checked with rails group records by dates of created_at and rails - group by day as well as hour But no luck!.

2.3.0 :175 > Subscribe.find 13
  Subscribe Load (0.9ms)  SELECT  "subscribes".* FROM "subscribes" WHERE "subscribes"."id" = $1 LIMIT 1  [["id", 13]]
 => #<Subscribe id: 13, user_id: 7, publisher_id: 5, created_at: "2015-11-23 00:37:49", updated_at: "2016-03-22 08:04:31", subscription_id: "2"> 

关于应用其他解决方案

2.3.0 :174 > Subscribe.where("DATE_PART('hour', created_at) = ?", 13)
  Subscribe Load (1.0ms)  SELECT "subscribes".* FROM "subscribes" WHERE (DATE_PART('hour', created_at) = 13)
 => #<ActiveRecord::Relation []> 

为了实现这一点,我使用了 groupdate

To achieve this I used groupdate

graph_data =  Subscribe.group_by_hour_of_day(:created_at, format: "%-l %M %P", time_zone: "Kolkata",range: start_date.to_datetime..end_date.to_datetime).count

 => {"12 00 am"=>0, "1 00 am"=>0, "2 00 am"=>0, "3 00 am"=>0, "4 00 am"=>0, "5 00 am"=>1, "6 00 am"=>1, "7 00 am"=>0, "8 00 am"=>0, "9 00 am"=>0, "10 00 am"=>0, "11 00 am"=>0, "12 00 pm"=>1, "1 00 pm"=>1, "2 00 pm"=>0, "3 00 pm"=>0, "4 00 pm"=>0, "5 00 pm"=>0, "6 00 pm"=>0, "7 00 pm"=>0, "8 00 pm"=>0, "9 00 pm"=>0, "10 00 pm"=>0, "11 00 pm"=>0} 

但是对于订阅 13,在 created_at (2015-11-23 00:37:49) 处有一条记录,但它返回为 0

but for Subscribe 13 there is an record at created_at (2015-11-23 00:37:49) but it return as 0

任何帮助将不胜感激!!!

Any help would be appreciated!!!

推荐答案

Groupdate Gem 有一个小问题.为了解决这个问题,我必须将 created_at 转换为相应的 time zone.

There was a little gotch with Groupdate Gem. In order to fix this I have to convert created_at to respective time zone.

range: start_date.to_datetime.in_time_zone(time_zone)..end_date.to_datetime.in_time_zone(time_zone).end_of_day).count

这篇关于为 created_at 列按一天中的小时分组的 Rails的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆