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

>> User . where ( created_at: Date . today . beginning_of_day .. Date . today . end_of_day ) => 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 .

>> User . where ( created_at: Date . today . all_day ) => 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.