2011-08-01 76 views
2

我使用下面的代碼來幫助找到當月的銷售。我的開發數據庫是SQLite,但我使用Heroku進行生產,使用PostgreSQL。所以我得到一個strftime函數不存在的錯誤。我該如何翻譯這個,並且是否有翻譯它的方法,以便在查詢我的開發SQLite數據庫時仍能正常工作?幫助翻譯Rails的Sqlite查詢postgresql

sales = current_user.location.sales.find(:all, 
              :conditions => ["strftime('%Y', date) = '?' 
                  AND strftime('%m', date) = ?", 
                  Date.today.year, 
                  Date.today.strftime('%m')], 
                  :order => "date") 
+0

其中導軌的版本? – kain

+2

使用sqlite進行開發和postgres進行部署需要麻煩。爲什麼不開發Postgres? –

+0

@kain使用Rails 3.0 – NicSlim

回答

4

Postgres不支持strftime。您可以找到支持的日期/時間函數列表here

sales = current_user.location.sales.find(:all, 
              :conditions => ["extract(year from date) = '?' 
                  AND extract(month from date) = ?", 
                  Date.today.year, 
                  Date.today.strftime('%m')], 
                  :order => "date") 
+0

謝謝!對於如何使用這些功能我有點不清楚。 – NicSlim

1

我覺得TO_TIMESTAMP或TO_CHAR是想看看類似的Postgres的功能。文檔非常簡單,基本上類似於不同模板模式的strftime:Postgres Datatype Formatting Functions

也許比你感興趣的更多,但如果你在Heroku上做了很多工作,我真的會推薦在本地運行Postgres。它會爲你節省很多痛苦。

+0

是的。我計劃在本地開始運行Postgres,但啓動和運行也會給我帶來麻煩:/ – NicSlim

1

如果您試圖獲取當月的銷售數據,這可能是一個更合適的數據庫不可知的查詢。

current_user.location.sales.where(:日期=>(Time.now.beginning_of_month..Time.now))。階( 「日期」)

+0

謝謝。這也可以,但是當我嘗試計算每個銷售列的總和並且銷售變量爲空時,會對我造成不同的問題。我結束了與postgres函數並切換我的dev db到postgres。 – NicSlim