按日期和截断时间的PostgreSQL组时间戳

时间:2018-02-09 14:36:08

标签: postgresql

表模式如下:

Column |           Type           |                    Modifiers                     
--------+--------------------------+--------------------------------------------------
time   | timestamp with time zone | default now()

时间格式如下:

          time          
------------------------
 2016-07-11 18:58:28+00
 2016-07-11 18:58:37+00
 2016-07-12 00:59:31+00

如何按时间分组截断时间?

我希望看到结果为:

          date          
------------------------
       2016-07-11 
       2016-07-11
       2016-07-12 

3 个答案:

答案 0 :(得分:1)

如果您想比较或按日期分组而不是时间戳,可以转换为DATE

SELECT time::DATE, ... FROM ... GROUP BY time::DATE;

或更简单

SELECT time::DATE, ... FROM ... GROUP BY 1;

答案 1 :(得分:1)

查看有关日期时间函数的当前Postgresql文档:https://www.postgresql.org/docs/current/static/functions-datetime.html

您可以使用date_truncextractto_char或最简单的方式转换为date(正如我所做的那样):

SELECT time::date; // 2016-07-11 18:58:28+00 -> 2016-07-11

干杯!

答案 2 :(得分:0)

使用date_trunc:

 select date_trunc('day', time)