我使用以下代码来帮助查找当月的销售额。我的开发数据库是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")
答案 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”)