GP可以使用date_part / extract从日期时间类型中抽取部分内容。
方法一:extract
格式:extract(field from source) extract函数从日期、时间数值里抽取子域,例如年、小时等。
注意:
- source的类型type必须为:timestamp、time、interval类型的值,因此date格式必须转换为timestamp格式
- field是一个标识符或者字符串,指定所抽取的域
select extract(century from timestamp '2018-08-01 12:12:13');-- Result:21
select extract(day from timestamp '2018-08-01 12:15:16');-- Result:01
方法二:date_part
格式:date_part('field', source) date_part函数是仿照在传统的Ingres函数,等效于 SQL 标准函数extract。
注意:field必须为字符串,可取值century、day、hour、month、minute等等。
select date_part('day', timestamp '2018-08-01 12:15:16');-- Result: 01
通过提取之后,将两个时间值做差即可得到时间差。
select date_part('day','2015-01-15 17:05'::timestamp - '2015-01-13 15:01'::timestamp);
select ('2015-01-15 17:05'::timestamp)::date-('2015-01-13 15:01'::timestamp)::date;
END 2018-08-01 17:23:47