как группировать по часам в postgresql с полем "время"?

у меня есть таблица со столбцом ctime типа time without time zone.

  |   cdate    |  ctime   
  +------------+----------
  | 2016-12-24 | 12:02:17
  | 2016-12-24 | 12:02:32
  | 2016-12-24 | 12:03:00
  | 2016-12-24 | 12:02:10

Я хотел бы, чтобы группа как cdate и ctime а ctime считать только часы.

2 ответов


использовать date_trunc:

group by cdate, date_trunc('hour', ctime)


Я думаю date_part('hour', ctime) лучший выбор, если вы просто хотите сгруппироваться на основе часа.

date_part('hour', timestamp '2001-02-16 20:38:40')    ---> 20
date_trunc('hour', interval '2 days 3 hours 40 minutes')    ---> 2 days 03:00:00