我的应用程序将用户的出勤日期时间存储为2014-11-23 08:42:00,将其转换为UTC,应用程序具有自定义搜索方法,仅通过输入日期作为2014-11-23来搜索出席。 现在的问题是我有不同的时间参加2014-11-23的日期和Rails通过转换为UTC存储它。因此,对于2记录,它将被转换,日期将更改为2014-11-22。
我的搜索查询是2014-11-23,预期结果是全部5条记录,但只获得3条记录。 没有得到其他2因为他们被转换为2014-11-22
如何输入2014-11-23才能获得全部5条记录? 请帮忙。
答案 0 :(得分:1)
如果您存储日期时间,则可以使用时区时间beginning_of_day
和end_of_day
方法将其用于该查询
date = Time.parse('Wed, 19 Nov 2014 19:23:59 UTC +00:00')
# => 2014-11-19 19:23:59 UTC
d = date.in_time_zone('Paris')
# => Wed, 19 Nov 2014 20:23:59 CET +01:00
User.where(created_at: (d.beginning_of_day..d.end_of_day)).count
# (46.5ms) SELECT COUNT(*) FROM "users" WHERE ("users"."created_at" BETWEEN '2014-11-18 23:00:00.000000' AND '2014-11-19 22:59:59.999999')