Rails& Sqlite问题 - 将日期与db时间戳进行比较

时间:2011-07-28 17:57:51

标签: ruby-on-rails ruby-on-rails-3 sqlite datetime

我正在尝试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问题:我是不正确地存储时间戳,还是比较不正确?非常感谢任何帮助!

2 个答案:

答案 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

仍然完全被原版问题困惑,但这似乎有效。