【问题标题】:Date Querying in MongoidMongoid 中的日期查询
【发布时间】:2011-09-12 16:09:04
【问题描述】:

这已经被问了很多,但我仍然面临一些问题。

我有收到的日期并存储为日期。我需要查询大于和小于,所以我将其更改为时间,再次尝试,但我得到了奇怪的结果。

我正在做这个

Class.where(:event_date.gt => Time.parse(Date.today))

我正在获取旧唱片,1940 年代、1960 年代等。我尝试通过在末尾添加 .utc 来转换时间,仅与 Date.today 进行比较,但到目前为止还没有解决问题。这是 Mongoid 生成的选择器

selector: {:date_utc=>{"$gte"=>Sat Sep 10 21:00:00 UTC 2011}},

我收到格式为“2011-09-11”的日期并将其存储在时间字段中。也尝试将其解析为 Time utc,但没有运气。

有什么想法吗?我正在使用 Mongoid 2.0.2。更高版本似乎与我正在使用的其他扩展不兼容。

[更新]

所以问题显然在于 1970 年之前的旧日期。我该如何处理它们是现在的问题。

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid


    【解决方案1】:

    这是 Mongo 中的一个已知错误。见ISSUE 405

    原因是 Mongo 使用无符号数字来存储日期,因此在纪元之前的任何内容都将滚动到很远的未来。

    幸运的是,今天发布的稳定版 2.0 已修复此问题。升级到这个版本应该可以解决您的问题。

    【讨论】:

    • 谢谢。由于该问题自去年以来一直开放,因此我似乎很幸运。这是否意味着我也需要升级 Mongoid?这似乎给我带来了问题
    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多