【问题标题】:Rails, ActiveRecord and dateRails、ActiveRecord 和日期
【发布时间】:2012-11-07 18:02:38
【问题描述】:

也许是个愚蠢的问题,但它现在让我发疯。 为什么

 User.where(:created_at => 1.day.ago..Time.now).count
   (0.8ms)  SELECT COUNT(*) FROM "users" WHERE ("users"."created_at" BETWEEN '2012-11-06 17:58:22.443552' AND '2012-11-07 17:58:22.443809')
 => 2 

 User.where(:created_at => 1.day.ago.to_date..Time.now.to_date).count
   (0.6ms)  SELECT COUNT(*) FROM "users" WHERE ("users"."created_at" BETWEEN '2012-11-06' AND '2012-11-07')
 => 0 

给我一​​个不同的结果?

我知道,如果没有时间(使用 .to_date),一天的开始和结束应该在午夜。这就是我想要的,但由于一些晦涩的原因,它显示为 0,但我在 10 分钟前创建了 2 个用户....

【问题讨论】:

    标签: ruby-on-rails date activerecord


    【解决方案1】:

    以下答案可能对您有所帮助。 MySQL "between" clause not inclusive?

    为了具体解决您的问题,我在此复制并重写上述链接中的答案:

    问题是 2011-01-31 真的是 2012-11-07 00:00:00。那是 一天的开始。不包括白天的所有内容。

    因此,您在 10 分钟前添加的条目在您未添加时间时显然会被跳过。

    【讨论】:

    • 谢谢,现在我使用 Time.now.beginning_of_day 等...而不将其转换为日期 :) 所以我的结果是准确的。
    猜你喜欢
    • 2011-01-23
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2012-10-24
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多