Ruby on rails rails mongodb存储时间,然后使用该时间进行查询

Ruby on rails rails mongodb存储时间,然后使用该时间进行查询,ruby-on-rails,mongodb,Ruby On Rails,Mongodb,它引发的查询是不同的 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(ma

它引发的查询是不同的

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

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

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

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)
我假设这是由于最后日期字符串中的CST造成的:

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

谢谢,你能提供一些解决方法吗?我的意思是存储日期时间和查询在几个小时内不用轮班就可以使用它吗?不,你必须修复这些日期,不管它们来自哪里
Time.parse "Mon, 30 Sep 2013 12:39:25 +08:00"
=> 2013-09-30 06:39:25 +0200