heroku Postgres错误 - 运算符不存在时区没有时区=整数

时间:2010-06-25 21:54:38

标签: postgresql operators heroku

我在控制器中使用以下代码:

  @monday = (Time.now).at_beginning_of_week

  @friday = 5.days.since(@monday)-1.second

  @sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday])

虽然它在我的本地sqlite上工作正常,但我有一个“运算符不存在时间戳而没有时区=整数”错误。

我不清楚要改变什么。

想法?

感谢。

1 个答案:

答案 0 :(得分:7)

您的参数@monday和@friday是错误的,这些参数必须是“没有时区的时间戳”类型,但是创建为整数,请参阅errormessage。 SQLite没有任何datetime-datatypes,因此日期存储为文本或整数(unix-timestamps)。这就是您在SQLite中没有得到错误消息的原因。

确保你创建像'2004-10-19 10:23:54'这样的时间戳,你会没事的。另一种选择可能是PostgreSQL函数to_timestamp()将你的unix-timestamp转换为时间戳:

@sent_emails = ContactEmail.all(:conditions => ['date_sent >= to_timestamp(?) and date_sent <= to_timestamp(?)', @monday, @friday])