2011-11-28 70 views
2

我有一個記錄數據庫,我想選擇最近幾天的天數,然後按天計算每天獲得這些記錄的計數。如果我是手工編寫的MySQL查詢,我喜歡的東西開始:ActiveRecord與日期相關的查詢; MySQL與PostgreSQL的比較

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') 
    } 

回答

2

SQL規範提供了一種提取方法是DB-無關:EXTRACT(<unit> FROM <date>)

+0

這可能適用於大多數環境,但是,如果您使用Sqlite3進行測試,那麼看起來它不知道如何處理'''EXTRACT'''。 –