Как преобразовать специфичный для платформы mysql запрос в неплатформенный?

У меня есть специфический запрос для платформы 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?

0

Решение

Предполагая, что вы храните значение «эпохи 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 тип данных?

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector