2010-10-28 9 views

Respuesta

34

Esto debería funcionar (carriles 3):

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

edición: si está usando PostgreSQL, la consulta debe ser

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

o obtendrá un error

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

Basado en

Graphing new users by date in a Rails app using Seer

y

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

8

he creado una joya para esto. https://github.com/ankane/groupdate

Foo.group_by_day(:created_at).count 

Incluso puede especificar un huso horario.

Foo.group_by_day(:created_at, time_zone: "Pacific Time (US & Canada)").count 
+0

Esto no funciona sin acceso a zonas horarias mysql en el servidor. Un desafío con AWS – Abram

+0

Dependencia bastante grande si está utilizando mysql, fue un factor decisivo para mí. – jahrichie

+0

¿Estás bromeando? gran dependencia? su 54kb descomprimido –

Cuestiones relacionadas