Sqlite到Postgres(Heroku)日期/时间

时间:2011-04-06 12:44:20

标签: sql ruby-on-rails-3 sqlite postgresql heroku

我在使用Heroku(postgres)将Rails 3应用程序投入生产时遇到错误,而本地(sqlite)代码工作正常 - 我看了看Postgres手册无济于事:

我的代码:

  

(strftime('%s','现在') - strftime('%s',   posts.created_at)

错误:

  

第1行:选择帖子。*,   ((strftime('%s','现在')-...
提示:否   函数匹配给定的名称和   参数类型。您可能需要添加   显式类型转换。

3 个答案:

答案 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'日期/时间typesfunctions之间,您需要确定准确的语法。

如果你的目标是在sqlite和postgres之间实现可移植性,可能的解决方案是在postgres中定义strftime函数。