Rails / データを時間単位で集計する

Shunsuke Sawada

13時、14時、15時とか、時間単位でログ集計が見たい時、あると思います。

ExampleLog というモデルがあるとします。
タイムゾーンはシドニーを指定してみました。

ruby
1
2
3
logs = ExampleLog.group("date_part('hour', timezone('Australia/Sydney', example_logs.created_at))").count

    
これでこんな感じのデータが手に入るはず。

1
2
3
4
5
6
7
8
9
[
{ 1: 123 },
{ 2: 13 },
{ 3: 33 },
{ 4: 433 },
.
.
.
]

date_part 便利だねー。
以上ですー。

参考

PostgreSQL: Documentation: 9.5: Date/Time Functions and Operators

PostgreSQL: date_part Function

Shunsuke Sawada

おすすめの記事

Railsを4.2にバージョンアップしたら、Vagrantのローカル開発環境にアクセスできなくなった問題
Railsのバリデーションエラー後にレイアウトが崩れるとき
acts-as-taggable-on タグを表示させる順番を決めたい