2012-04-06 18 views
5

Estoy tratando de crear un rango de consulta created_at que capture todos los registros creados desde la medianoche UTC (valor predeterminado de la base de datos) hasta ahora. En el pasado he sido capaz de consultar el tiempo varía con:Cómo consultar todos los registros creados hoy (medianoche UTC..Actualmente)

created_at => (24.hours.ago..Time.now) 

Pero el ajuste de la anterior para el nuevo caso de uso no funciona:

created_at => (Date.today..Time.now) 

Cualquier sugerencia sobre cómo puedo actualizar el created_at rango para ser todos los registros de hoy/no en las últimas 24 horas?

Gracias

Respuesta

10
created_at => (DateTime.now.at_beginning_of_day.utc..Time.now.utc) 
0
Date.today.beginning_of_day.utc..Date.today.end_of_day.utc 
2

creo, se puede probar por debajo de la línea también.

ModelName.all :condition => ["DATE(created_at) = DATE(?)", Time.now] 

O En Rails 3

Model.where "DATE(created_at) = DATE(?)", Time.now 

saludos!

2

Creo que debe tenerse en cuenta la zona horaria.

where(:created_at => Time.zone.now.beginning_of_day.utc..Time.zone.now.end_of_day.utc)

y rieles va a cambiar el tiempo a la hora UTC de forma automática, por lo que la siguiente es también aceptable.

where(:created_at => Time.now.beginning_of_day..Time.now.end_of_day)

Cuestiones relacionadas