Das Öffnen der guten Konsole beantwortet alle Ihre Fragen.
Mit ..
ruft eine BETWEEN
Anweisung in der db
User.where(created_at: Time.zone.today.beginning_of_day..Time.zone.today.end_of_day).to_sql
# SELECT "users".*
# FROM "users"
# WHERE ("users"."created_at" BETWEEN '2017-06-06 00:00:00' AND '2017-06-06 23:59:59.999999')
Mit ...
ruft es die >=
<
Magie.
User.where(created_at: Time.zone.today.beginning_of_day...Time.zone.today.end_of_day).to_sql
# SELECT "users".*
# FROM "users"
# WHERE ("users"."created_at" >= '2017-06-06 00:00:00' AND
# "users"."created_at" < '2017-06-06 23:59:59.999999')
Rails 5.1 enthält einen netten kleine Helfer genannt all_day
, die dies ermöglicht. Es gibt die gleiche Aussage wie bei ..
Users.where(created_at: Time.zone.today.all_day).to_sql
Hinweis:
Wenn Sie wirklich paranoid sind und haben einen super wichtig lebensrettenden App gehen, Time.zone.today
könnte tatsächlich in dem ändern Millisekunden aus dem Aufruf beginning_of_day
und end_of_day
, so können Sie dies dann tun.
today = Time.zone.today
Users.where(created_at: today.beginning_of_day..today.end_of_day)
'..' ist inklusive Bereich. – sawa
_Sidenote: _ Ausführen dieser Zeile: '(Time.now.beginn_of..Time.now.end_of_day) .cover? Time.parse ('2017-06-06 00:00:00 +0000') 'direkt in Ihrer Konsole wäre 100-mal schneller als die Frage an SO zu posten. – mudasobwa
Sie können es nach 'User.where (: created_at => Time.now.beginning_of_day..Time.now.end_of_day) .to_sql' sehen – fangxing