我正在尝试this:将一天的总销售额映射到高价图表的日期数组(是的,我的项目实际上与railscast示例完全相同)。
不幸的是,我结束了很多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问题:我是不正确地存储时间戳,还是比较不正确?非常感谢任何帮助!
答案 0 :(得分:4)
最佳做法是使用to_s(:db)在Rails中引用数据库中的日期时间。尝试:
def self.total_revenue_on(date)
where("date(created_at) = ?", date.to_s(:db)).sum(:amt)
end
答案 1 :(得分:1)
好的,我设法通过使用不同的查找方法来解决这个问题:
def self.total_revenue_on(date)
where("datetime >= ? and datetime < ?", date, date + 1.day).sum(:amt)
end
仍然完全被原版问题困惑,但这似乎有效。