现在我有以下查询:
User.find(:all, :conditions => ["guest = ? AND created_at >= ?", false , (Date.yesterday)]).count
昨天在rails / db服务器上的问题是GMT。我需要计数的地方是用PST计算的。
如何更新上述查询以查找昨天在PST时区创建的所有用户?
由于
答案 0 :(得分:5)
试试这个
@from = (Time.zone.now - 1.day).beginning_of_day.in_time_zone('Pacific Time (US & Canada)')
@to = (Time.zone.now).beginning_of_day.in_time_zone('Pacific Time (US & Canada)')
User.count(:conditions => ["created_at >= ? and created_at <= ?", @from, @to])
答案 1 :(得分:1)
对此有一个微调,一个微妙的调整 - Date.yesterday
使用Date.current
将使用时区,而Date.today
则不会。如果您将时区设置为明天的时区(例如欧洲/柏林,因为我输入了此区域),那么您可以获得Date.today == Date.yesterday:
>> Time.zone = "Europe/London"
=> "Europe/London"
>> Date.today == Date.yesterday
=> false
>> Time.zone = "Europe/Berlin"
=> "Europe/Berlin"
>> Date.today == Date.yesterday
=> true
使用Date.current == Date.yesterday按预期工作。此示例以irb显示,因此请尝试找到一种方法将其妥善放入rails应用程序中。 注意:我没有显示您需要的确切内容,因为您在初始化时区之前已经进行了一些编码,但只是抛出一些有价值的位。希望这有帮助