如何在postgresql中用"时间"字段按小时分组?

Der*_*unk 24 sql 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
Run Code Online (Sandbox Code Playgroud)

我想两个人分组cdate,ctime但我想ctime只计算几个小时.

Vao*_*sun 44

用途date_trunc:

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


小智 14

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
Run Code Online (Sandbox Code Playgroud)

  • 在这个答案中应该强调的主要区别是,“date_part('hour', ctime)”不会区分今天的 4:20 和昨天的 4:20(两者都会产生“4”),而“date_trunc( 'hour', ctime)` 将(产生完整的原始时间戳,只是将小于一小时的单位截断)。 (14认同)