【问题标题】:DataMapper DateTime conditionsDataMapper 日期时间条件
【发布时间】: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


【解决方案1】:

好的,我发现了错误,我只是错过了在我的 Sinatra 脚本中要求 dm-aggregates,正如 docs under 'Counting' 中明确说明的那样。

对不起!

【讨论】:

    猜你喜欢
    • 2015-07-13
    • 2015-10-05
    • 1970-01-01
    • 2013-06-03
    • 2022-01-06
    • 2018-03-15
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    相关资源
    最近更新 更多