我有一个作用域(scope),可以查询今天的通话记录。根据这个作用域,我可以计算今天通话的数量。
我的日期是以UTC格式存储的,但Rails会转换成我所在地的时区。我想做的是找到今天00:00到23:59之间的所有通话记录。
作用域:
scope :today, where("DATE(transfer_date) BETWEEN ? AND ?", Time.zone.now.utc.beginning_of_day, Time.zone.now.utc.end_of_day)
irb输出:(由于UTC而捕获的调用)
irb(main):010:0> Call.last.transfer_date
Call Load (0.9ms) SELECT "calls".* FROM "calls" ORDER BY "calls"."id" DESC LIMIT 1
=> Sun, 07 Oct 2012 19:45:00 CDT -05:00
irb(main):011:0>
irb(main):011:0> Call.last.transfer_date.utc
Call Load (1.3ms) SELECT "calls".* FROM "calls" ORDER BY "calls"."id" DESC LIMIT 1
=> 2012-10-08 00:45:00 UTC
我正在尝试找出如何查询今天00:00到23:59之间的通话记录。迄今为止,尝试使用和不使用UTC、区域等作用域都不起作用。它继续基于UTC拉取范围,这包括昨天的通话记录(如果使用本地时区格式化,则是昨天)。
我该如何在这两个时间之间查询以获得正确的输出?我有点迷失在这里。