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 に答える