Foo.group(:start_at).count(:id)
Comment puis-je regrouper ceci par date? la colonne "start_at" est une colonne datetimerails 3 grouper par date une colonne datetime
Foo.group(:start_at).count(:id)
Comment puis-je regrouper ceci par date? la colonne "start_at" est une colonne datetimerails 3 grouper par date une colonne datetime
Cela devrait fonctionner (rails 3):
Foo.order(:start_at).group("DATE(start_at)").count
edit: si vous utilisez PostgreSQL, la requête doit être
Foo.order("DATE(start_at)").group("DATE(start_at)").count
ou vous « get ll une erreur
("PGError: ERROR: column "foos.start_at" must appear in the GROUP BY clause or be used in an aggregate function")
Basé sur
Graphing new users by date in a Rails app using Seer
et
http://www.pastbedti.me/2009/11/grouping-a-timestamp-field-by-date-in-ruby-on-rails-postgresql/
J'ai créé un petit bijou pour cela. https://github.com/ankane/groupdate
Foo.group_by_day(:created_at).count
Vous pouvez même spécifier un fuseau horaire.
Foo.group_by_day(:created_at, time_zone: "Pacific Time (US & Canada)").count
Cela ne fonctionne pas sans accès aux fuseaux horaires mysql sur le serveur. Un défi avec AWS – Abram
Une dépendance assez grande si vous utilisez mysql, était un briseur d'affaire pour moi. – jahrichie
Vous plaisantez? grande dépendance? son 54kb décompressé –