Мне нужно было бы выбрать самый распространенный момент дня (рассвет, утро, вечер, ночь) в группе записей.Я пытаюсь сгруппировать результаты в моменты, используя CASE-WHEN, но я не могу сравнить дату и целое число.Я пытаюсь это:
SELECT done_at,
case done_at
when date_trunc('hour', done_at) > 0 and date_trunc('hour', done_at) <= 7 then
'dawn'
when dayhour > 7 and dayhour <= 12 then
'morning'
when dayhour > 12 and dayhour <= 20 then
'evening'
when dayhour > 20 and dayhour <= 00 then
'night'
end
FROM iterations;
Но с этим я получаю эту ошибку:
PGError: ERROR: operator does not exist: timestamp without time zone > integer
LINE 3: when date_trunc('hour', done_at) > 0 and date_trunc('h...
Я также пытался привести тип к целому числу, но я получаю это:
PGError: ERROR: cannot cast type timestamp without time zone to integer
LINE 3: when date_trunc('hour', done_at)::integer > 0 and date...
Дело в том, что у done_at есть часовой пояс.С консоли Rails:
?> Iteration.first.done_at
=> Fri, 23 Sep 2011 02:00:00 CEST +02:00
А теперь я не в курсе.
Любой намек или какой-либо другой способ получить момент дня?