1. 对时间的操作:
在PostgreSQL中可以直接对时间进行加减运算:
SELECT now()::timestamp + '1 year'; --当前时间加1年
SELECT now()::timestamp + '1 month'; --当前时间加一个月
SELECT now()::timestamp + '1 day'; --当前时间加一天
SELECT now()::timestamp + '1 hour'; --当前时间加一个小时
SELECT now()::timestamp + '1 min'; --当前时间加一分钟
SELECT now()::timestamp + '1 sec'; --加一秒钟
select now()::timestamp + '1 year 1 month 1 day 1 hour 1 min 1 sec'; --加1年1月1天1时1分1秒
SELECT now()::timestamp + (col || ' day')::interval FROM table --把col字段转换成天 然后相加
2. 时间间隔1小时
SELECT
TO_CHAR(TIME, 'yyyy-MM-DD HH24:00:00') AS xtime
FROM
generate_series(date_trunc('hour',
(
SELECT
to_timestamp('2016-08-11','yyyy-MM-DD 00:00:00') ) ), date_trunc('hour',
(
SELECT
to_timestamp('2016-08-11 20:31:50','yyyy-MM-DD HH24:MI:SS'))), '1 hour') AS tt(TIME)
3. 获取一个时间区间的时间列表
SELECT
TO_CHAR(DATE(TIME), 'yyyy-MM-DD') AS dispatch_date
FROM
generate_series( date_trunc('day', DATE %(start_date)s ), date_trunc('day', DATE
%(end_date)s), '1 day') AS tt(TIME)
4. 获取一个时间区间的每一天
SELECT
TO_CHAR(TIME, 'yyyy-MM-DD') AS xtime
FROM generate_series(
date_trunc('day', (SELECT to_timestamp('2016-08-11','yyyy-MM-DD'))),
date_trunc('day',(SELECT to_timestamp('2016-08-20','yyyy-MM-DD'))),
'1 day'
) AS tt(TIME)