帮助将Rails Sqlite查询转换为postgresql

时间:2011-08-01 19:37:57

标签: ruby-on-rails sqlite postgresql

我使用以下代码来帮助查找当月的销售额。我的开发数据库是SQLite,但是我正在使用Heroku进行生产,它使用PostgreSQL。所以我得到一个strftime函数不存在错误。我将如何翻译它,有没有办法翻译它,以便它在查询我的开发SQLite数据库时仍然有效?

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

3 个答案:

答案 0 :(得分: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")

答案 1 :(得分:1)

我认为to_timestamp或to_char是你想要看的类似的Postgres函数。文档很简单;与具有不同模板模式的strftime基本类似:Postgres Datatype Formatting Functions

也许比你感兴趣的还要多,但如果你和Heroku做了很多工作,我真的建议你在本地运行Postgres。它将为您节省相当多的痛苦。

答案 2 :(得分:1)

如果您尝试获取当月的销售数据,这可能是更合适的,与数据库无关的查询。

current_user.location.sales.where(:date =>(Time.now.beginning_of_month..Time.now))。order(“date”)