【问题标题】:ActiveRecord date-related queries; MySQL versus PostgreSQLActiveRecord 日期相关查询; MySQL 与 PostgreSQL
【发布时间】:2011-11-28 22:10:15
【问题描述】:

我有一个记录数据库,我想选择最近一周的几天并按天分组以获取这些记录的每天计数。如果我手动编写 MySQL 查询,我会从以下内容开始:

SELECT COUNT( id ) AS count, DAY( created_at ) AS the_day
FROM  `results` 
GROUP BY the_day

我如何使用ActiveRecord 来抽象这个查询以便它也适用于 PostgreSQL?所以,到目前为止,我有一个范围来选择上面的这个查询,但我不确定这是否适用于 PostgreSQL:

  scope :recent, lambda {
    select(['id', 'COUNT(id) AS the_count', 'DAY(created_at) AS the_day'])
    .where(:created_at => 7.days.ago.utc...Time.now.utc)
    .order('the_day DESC')
    .group('the_day')
  }

【问题讨论】:

    标签: mysql ruby-on-rails postgresql activerecord


    【解决方案1】:

    SQL 规范提供了一种与 DB 无关的提取方法:EXTRACT(<unit> FROM <date>)

    【讨论】:

    • 这可能适用于大多数环境,但是,如果您使用 Sqlite3 进行测试,那么它似乎不知道如何处理 EXTRACT
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2012-03-05
    相关资源
    最近更新 更多