首页 » 编程开发 » GreenPlum » 正文

GreenPlum和PostgreSQL常用时间计算转换方法

首先,介绍一下,Greenplum是以Postgresql为内核的并行计算数据库,PostgreSQL是GreenPlum的代码基础,GreenPlum在PostgreSQL8.2的基础之上进行MPP化改造,所以GreenPlum和PostgreSQL的大部分函数使用方法都基本一致。
本文主要介绍几种开发中经常用到的时间转换方法。
一、获取系统时间和时间格式化

1、获取当前时间
select now();
select current_timestamp;
select CURRENT_TIME;
select LOCALTIME;
select LOCALTIMESTAMP;
select now()::timestamp without time zone –获取当前时间 ,不带时区
select current_date; –获取当天日期 格式YYYY-MM-DD
2、时间格式化
select timestamp ‘2012-05-12 18:54:54’; –时间格式由字符串转换为timestamp,格式YYYY-DD-MM HH24:MI:SS
select date ‘2012-05-12 18:54:54’; –时间格式由字符串转换为date ,格式YYYY-MM-DD
timestamp ‘2012-05-12 18:54:54’是在函数中强制将字符串转换成timestamp的方法,在一般函数中此方法通用,后面不解释

二、时间截取

1、extract函数
显示年
select extract(year from now());
select extract(year from timestamp ‘2012-05-12 18:54:54’);
显示月
select extract(mon from now());
显示日
select extract(day from now());
显示小时
select extract(hour from now());
显示分钟
select extract(minutes from now());
显示秒
select extract(second from now());
2、date_part函数
显示年
select date_part(‘year’ ,timestamp ‘2012-05-12 18:54:54’);
显示月
select date_part(‘month’ ,timestamp ‘2012-05-12 18:54:54’);

三、时间相加减换算

1、age函数
执行:select age(timestamp ‘20160114’,timestamp ‘19911008’);
结果:24 years 3 mons 6 days
从上面例子可以看出age函数可以计算两个时间之间相差的具体年月日。age函数如果不输入第一个参数,那么默认会用当前时间代替,看下例:
执行:select age(timestamp ‘20140114’);
结果:4 years 7 mons 14 days –当前系统时间减去时间20140114的结果
2、如果现在想要查看两个时间之间有多少个月份,计算如下:
执行:select (EXTRACT(YEAR from age(timestamp ‘20160114’,timestamp ‘19911008’))*12+EXTRACT(MONTH from age(timestamp ‘20160114’,timestamp ‘19911008’))+1)
结果:292
注意:上面的算法后面+1,逻辑是如果两个时间相差的天数不满一个月,那么也算一个月

发表评论