Я создаю приложение для Heroku (Postgres), но по разным причинам разрабатывая его локально с использованием MySQL. Я попал в блокпост относительно того, что моя среда MySQL-dev берет без проблем, но среда Heroku Postgres зависает. Вот Журнальный поток от Heroku:Сравнение времени/даты в PostgreSQL (Heroku)
2012-02-07T10:00:00+00:00 app[web.1]: Report Load (2.5ms) SELECT id, datetime_utc FROM "reports" WHERE (datetime_utc = '2012-02-07 10:00:00.000000') AND (datetime_utc > spot_sunrise_utc AND datetime_utc > spot_sunset_utc) ORDER BY datetime_utc ASC LIMIT 500
2012-02-07T10:00:00+00:00 app[web.1]: PGError: ERROR: operator does not exist: timestamp without time zone > time without time zone
2012-02-07T10:00:00+00:00 app[web.1]: LINE 1: ...EEN 0.4573170731707317 and 200) AND (datetime_utc > spot_sun...
2012-02-07T10:00:00+00:00 app[web.1]: ^
2012-02-07T10:00:00+00:00 app[web.1]: HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Поле datetime_utc
является реальным datetime
тогда как spot_sunrise
/sunset_utc
полей только значения времени.
Что вызывает это и как его обойти?
привет Эрвин - вы имели в виду «CAST (datetime_utc как время)»? проблема в том, что я действительно нуждаюсь во всей информации о времени и времени. – user1051849
Если вы хотите сравнить временную метку времени, вам придется отдать ее на «время». Первое условие WHERE использует всю временную метку. И да, 'datetime_utc :: time' совпадает с' CAST (datetime_utc как время) '. –
хорошо спасибо за разъяснения. к сожалению, я боюсь осознавать проблемы, связанные с поддержанием различных dbs для dev и производства - надеясь как можно скорее решить эту проблему. – user1051849