У меня есть специфический запрос для платформы MySQL:
SELECT month(from_unixtime(s.date)) AS month, count(s.id) AS blah, s.status
FROM Something s
WHERE s.date between unix_timestamp($blah1) and unix_timestamp($blah2)
GROUP BY s.status, month
Я использовал некоторые специфичные для платформы MySQL команды, такие как month
, from_unixtime
а также unix_timestamp
,
Как я могу переписать этот запрос, чтобы сделать его кросс-платформенным совместимым, чтобы он работал и на Postgres?
Предполагая, что вы храните значение «эпохи Unix» в столбце date
должно работать следующее:
SELECT extract(month from to_timestamp(s.date)) AS month,
count(s.id) AS blah,
s.status
FROM Something s
WHERE s.date between to_timestamp($blah1) and to_timestamp($blah2)
GROUP BY s.status, month
to_timestamp()
с двойным (или целочисленным) параметром преобразует эпоху Unix в правильную метку времени.
Однако реальный вопрос: почему вы не используете правильный timestamp
тип данных?
Других решений пока нет …