2011-07-28 75 views
4

我正在嘗試this:將一天中的總銷售額映射到highcharts的一組日期(是的,我的項目與railscast示例的效果完全相同)。Rails&Sqlite問題 - 將日期與db時間戳進行比較

我不幸剛剛結束了很多0;我相信我的模型中的作品:

def self.total_revenue_on(date) 
    where("date(created_at) = ?", date).sum(:amt) 
end 

無法將日期與我的數據庫中寫入的日期時間相匹配,例如, 「2011-07-21 09:22:28.388944 + 0000」。可以肯定的是,這是失敗的地方,因爲如果我從我的數據庫中手動刪除時區片(擺脫「+0000」而只留下「2011-07-21 09:22:28.388944」),它工作得很好。

我認爲這是一個真正的rails/sqlite問題:我存儲的時間戳不正確,還是比較不正確?任何幫助是極大的讚賞!

回答

4

最佳做法是使用to_s(:db)在Rails中引用數據庫中的日期時間。嘗試:

def self.total_revenue_on(date) 
    where("date(created_at) = ?", date.to_s(:db)).sum(:amt) 
end 
+0

我不知道,太棒了,非常感謝! – tekunokurato

1

OK,我設法通過使用不同的查找方法來解決這個問題:

def self.total_revenue_on(date) 
    where("datetime >= ? and datetime < ?", date, date + 1.day).sum(:amt) 
end 

通過與原來的問題仍然困擾完全,但是這似乎是工作。