0
33] pry(main)> Tweet.last.c_at.to_s
=> "2013-09-30 12:39:25 +0800"
[34] pry(main)> Tweet.last.c_at
=> Mon, 30 Sep 2013 12:39:25 CST +08:00
[35] pry(main)> Tweet.gt(c_at: "2013-09-30 12:39:25 +0800").count
=> 1
[36] pry(main)> Tweet.gt(c_at: "Mon, 30 Sep 2013 12:39:25 CST +08:00").count
=> 0

它启动的查询不同

command={:count=>"tweets", :query=>{"c_at"=>{"$gt"=>2013-09-30 04:47:33 UTC}}} (0.8490ms)
command={:count=>"tweets", :query=>{"c_at"=>{"$gt"=>2013-09-30 18:47:33 UTC}}} (0.8671ms)

为什么会发生这种情况以及如何存储时间然后使用它来查询?

4

1 回答 1

1

你在这里处理日期时间。这不是 mongodb 问题,也不是 rails 问题,只是输入被破坏:

Time.parse "2013-09-30 12:39:25 +0800"
=> 2013-09-30 06:39:25 +0200
Time.parse "Mon, 30 Sep 2013 12:39:25 CST +08:00"
=> 2013-09-30 20:39:25 +0200

我假设这是由于最后一个日期字符串中的 CST:

Time.parse "Mon, 30 Sep 2013 12:39:25 +08:00"
=> 2013-09-30 06:39:25 +0200
于 2013-09-30T10:13:52.097 回答