我在使用Heroku(postgres)将Rails 3应用程序投入生产时遇到错误,而本地(sqlite)代码工作正常 - 我看了看Postgres手册无济于事:
我的代码:
(strftime('%s','现在') - strftime('%s', posts.created_at)
错误:
第1行:选择帖子。*, ((strftime('%s','现在')-...
提示:否 函数匹配给定的名称和 参数类型。您可能需要添加 显式类型转换。
答案 0 :(得分:2)
在PostgreSQL中你没有strftime函数。要计算您可以使用的日期之间的秒数:
SELECT extract(epoch from now() - posts.created_at);
同样重要的是要注意,在PostgreSQL中你有间隔数据类型,所以如果你只是减去(now() - posts.created_at),它将为你返回一个很好的间隔类型,可以很容易地用to_char格式化。
答案 1 :(得分:0)
该功能到底应该做什么?
要格式化日期或时间戳列,请使用to_char()
要计算两个日期之间的天数差异,只需使用:now() - posts.created_at
(假设created_at是date
类型的列)
如果created_at
不是date
列(这将是一个大错误),您需要使用to_date()将字符串转换为日期。
答案 2 :(得分:0)
在formatting和postgres'日期/时间types和functions之间,您需要确定准确的语法。
如果你的目标是在sqlite和postgres之间实现可移植性,可能的解决方案是在postgres中定义strftime函数。