heroku Postgres ошибка - у оператора не существует отметка времени без timezone = integer - PullRequest
7 голосов
/ 26 июня 2010

Я использую следующий код в моем контроллере:

  @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, у меня есть ошибка "оператор не существует отметки времени без timezone = integer".

Мне не совсем понятно, что менять.

Идеи?

Спасибо.

1 Ответ

7 голосов
/ 26 июня 2010

Ваши параметры @monday и @friday неверны, они должны иметь тип "отметка времени без часового пояса", но создаются как целые числа, см. Сообщение об ошибке. SQLite не имеет типов данных datetime, поэтому даты хранятся в виде текста или целых чисел (unix-timestamps). Вот почему вы не получаете сообщение об ошибке в SQLite.

Убедитесь, что вы создали временные метки, например «2004-10-19 10:23:54», и все будет в порядке. Другим вариантом может быть функция PostgreSQL to_timestamp () для преобразования вашей метки времени unix в метку времени:

@sent_emails = ContactEmail.all(:conditions => ['date_sent >= to_timestamp(?) and date_sent <= to_timestamp(?)', @monday, @friday])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...