【发布时间】:2012-09-23 13:15:51
【问题描述】:
我正在使用带有 DataMapper MySql 数据库的简单 Sinatra Web 应用程序。我声明了一个带有属性的 Datamapper Post 类
property :created_at, DateTime
(初始化为Time.now)现在想要获取过去 7 天的所有帖子的计数。我的查询
lastweek_posts = Post.count(:created_at.gte => 1.week.ago)
lastweek_posts = Post.count(:conditions => ["created_at >= ?", Time.now.utc - 1.week])
然而,所有返回的计数都是 0(数据库包含多个条目,其中 created_at 为今天)。什么是正确的查询?
非常感谢!
更新:
Post.all(:created_at.gte => 1.week.ago).length
返回正确的值,但是这是一个糟糕的选择,因为它会从我的远程 sql 数据库中获取所有帖子。
【问题讨论】:
-
这两个查询都是正确的,并且对我来说完美。
-
感谢您的反馈!奇怪,这可能是mysql适配器的内部问题,日期时间/时间数据类型转换?
-
检查 Post.all 返回的内容,看看是否可以通过依赖 ruby 端获得相同的结果。它也可能取决于适配器,尝试将列类型更改为时间(映射到 TIMESTAMP,这是存储时间的推荐类型)。
-
谢谢,看到我上面的更新,一个 fetch 结合一个 ruby 计数返回正确的值。所以这可能是 DataMapper 的一个错误?
标签: ruby datetime sinatra datamapper