Sqlite to Postgres (Heroku) Дата / Время - PullRequest
1 голос
/ 06 апреля 2011

Я получаю сообщение об ошибке при запуске приложения Rails 3 в производство на Heroku (postgres), в то время как локально (sqlite) код работает нормально - я посмотрел руководство Postgres безрезультатно:

Мой код:

(strftime ('% s', 'now') - strftime ('% s', posts.created_at)

Ошибка:

ЛИНИЯ 1: ВЫБРАТЬ сообщения. *, ((Strftime ('% s', 'now') -...
СОВЕТ: Нет совпадений функцийзаданные имена и типы аргументов. Возможно, вам понадобится добавить явное приведение типов.

Ответы [ 3 ]

2 голосов
/ 06 апреля 2011

В PostgreSQL у вас нет функции strftime. Для вычисления количества секунд между датами вы можете использовать:

SELECT extract(epoch from now() - posts.created_at);

Также важно отметить, что в PostgreSQL у вас есть интервальный тип данных, поэтому, если вы просто вычтите (now () - posts.created_at), он вернет вам хороший интервальный тип, который можно легко отформатировать с помощью to_char.

0 голосов
/ 06 апреля 2011

Между форматированием и датой / временем postgres типами и функциями вам необходимо определить точный синтаксис.

Если выДля обеспечения переносимости между sqlite и postgres возможное решение - определить функцию strftime в postgres.

0 голосов
/ 06 апреля 2011

Что именно должна делать эта функция?

Для форматирования столбца даты или отметки времени используйте to_char ()

Чтобы вычислить разницу в днях между двумя датами, просто используйте: now() - posts.created_at (при условии, что созданный_катол является столбцом типа date)

Если created_at не является столбцом date (что было бы большой ошибкой), вам нужно использовать to_date () для преобразования строки в дату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...