ActiveRecord запросы, связанные с датами; MySQL против PostgreSQL - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть база данных записей, в которой я хочу выбрать самую последнюю неделю дней и сгруппировать по дням, чтобы получить счет за день для этих записей. Если бы я писал запрос 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')
  }

1 Ответ

2 голосов
/ 29 ноября 2011

В спецификации SQL предусмотрен метод извлечения, не зависящий от БД: EXTRACT(<unit> FROM <date>)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...