2011-07-28 8 views
4

私は何をしようとしていますthis:ハイチャートの日付の配列に1日の総売上をマッピングします(私のプロジェクトは実質的に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"のままにしておくと)、それはうまく動作するので、確かに失敗しています。

これは本当にレール/ sqliteの質問だと思います。私はタイムスタンプを不適切に保管していますか、または不適切に比較していますか?どんな助けでも大歓迎です!

答えて

4

ベストプラクティスは、Railsのデータベースでdatetimesを参照するためにto_s(:db)を使用することです。試してみてください:

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 

はまだ完全にオリジナルの問題が当惑が、これは動作しているようです。

関連する問題