【问题标题】:Abstracting a date subtraction SQL query with Rails使用 Rails 抽象日期减法 SQL 查询
【发布时间】:2010-02-10 11:07:29
【问题描述】:

我在 ActiveRecord 查找方法中使用以下内容:

:conditions => "created_at > date_sub(now(), INTERVAL 7 DAY)"

这在我使用 MySQL 的开发服务器上正常工作,但我正在部署到没有 date_sub 函数的 postgreSQL。忽略我使用两个不同的数据库这一事实,Rails 是否内置了任何东西来抽象这个日期减法操作?

如果没有,Rails 中是否有推荐的构造来指定在遇到不同 DB 时应该运行的两个不同 SQL 查询?

【问题讨论】:

    标签: sql mysql ruby-on-rails postgresql


    【解决方案1】:

    你可以的

    Object.find(:all, :conditions => ["created_at > ?", 7.days.ago])
    #=> SELECT * FROM "objects" WHERE (created_at > '2010-02-03 12:06:19.352398') 
    

    应该跨不同的数据库工作

    【讨论】:

    • 正在考虑这样做,但我希望能够使用数据库时间而不是 Web 服务器时间。
    • 当您已经在使用 ActiveRecord 时,我认为这并不重要 :) 最重要的是,这将适用于跨数据库
    • 我想这取决于设置。我的理解是 created_at 日期时间是从数据库而不是 Web 服务器提供的。这不是 ActiveRecord 的情况吗?
    猜你喜欢
    • 2017-02-02
    • 2018-04-14
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多