рельсы 3 группа по дате столбец дата / время - PullRequest
19 голосов
/ 28 октября 2010
Foo.group(:start_at).count(:id)

Как я могу сгруппировать это по дате? столбец start_at является столбцом даты и времени

Ответы [ 2 ]

37 голосов
/ 31 октября 2010

Это должно работать (рельсы 3):

Foo.order(:start_at).group("DATE(start_at)").count

edit: если вы используете PostgreSQL, запрос должен быть

Foo.order("DATE(start_at)").group("DATE(start_at)").count

, иначе вы получите ошибку

("PGError: ERROR:  column "foos.start_at" must appear in the GROUP BY clause or be used in an aggregate function")

На основе

Отображение новых пользователей по дате в приложении Rails с использованием Seer

и

http://www.pastbedti.me/2009/11/grouping-a-timestamp-field-by-date-in-ruby-on-rails-postgresql/

8 голосов
/ 26 апреля 2013

Я создал драгоценный камень для этого.https://github.com/ankane/groupdate

Foo.group_by_day(:created_at).count

Вы даже можете указать часовой пояс.

Foo.group_by_day(:created_at, time_zone: "Pacific Time (US & Canada)").count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...