Rails 5.1 has introduced Date#all_day helper

Prathamesh Sonpatki

By Prathamesh Sonpatki

on April 24, 2017

Sometimes, we want to query records over the whole day for a given date.

1>> User.where(created_at: Date.today.beginning_of_day..Date.today.end_of_day)
2
3=> SELECT "users".* FROM "users" WHERE ("users"."created_at" BETWEEN $1 AND $2) [["created_at", 2017-04-09 00:00:00 UTC], ["created_at", 2017-04-09 23:59:59 UTC]]

Rails 5.1 has introduced a helper method for creating this range object for a given date in the form of Date#all_day.

1>> User.where(created_at: Date.today.all_day)
2
3=> SELECT "users".* FROM "users" WHERE ("users"."created_at" BETWEEN $1 AND $2) [["created_at", 2017-04-09 00:00:00 UTC], ["created_at", 2017-04-09 23:59:59 UTC]]

We can confirm that the Date#all_day method returns the range object for a given date.

1>> Date.today.all_day
2
3=> Sun, 09 Apr 2017 00:00:00 UTC +00:00..Sun, 09 Apr 2017 23:59:59 UTC +00:00

Stay up to date with our blogs. Sign up for our newsletter.

We write about Ruby on Rails, ReactJS, React Native, remote work,open source, engineering & design.