Postgres Timestamp 日期计算
目录
基本时间戳计算
当前时间 +5分钟(minute)
SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + (5 * INTERVAL '1 minute');
current_timestamp | ?column?
-------------------------------+-------------------------------
2022-01-06 06:46:13.137125+00 | 2022-01-06 06:51:13.137125+00
当前时间 -3分钟(minute)
SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP - (3 * INTERVAL '1 minute');
current_timestamp | ?column?
-------------------------------+-------------------------------
2022-01-06 06:47:06.786017+00 | 2022-01-06 06:44:06.786017+00
也可以用RFC格式
SELECT '2020-03-20 00:00:00'::TIMESTAMP + INTERVAL '23:59:59';
?column?
---------------------
2020-03-20 23:59:59
(1 row)
常用时间单位
单位 | 标识 | 示例 |
---|---|---|
秒 | second |
2 * INTERVAL '1 second' |
小时 | second |
2 * INTERVAL '1 hour' |
天 | day |
2 * INTERVAL '1 day' |
礼拜 | week |
2 * INTERVAL '1 week' |
月 | month |
2 * INTERVAL '1 month' |
年 | year |
2 * INTERVAL '1 year' |
时间戳比较
比较符号
常用的比较符号都有效。
-- "当前时间 > 当前时间的5分钟后" = FALSE
SELECT CURRENT_TIMESTAMP > CURRENT_TIMESTAMP + (5 * INTERVAL '1 minute');
?column?
----------
f
(1 row)
-- "当前时间 <> 当前时间的5分钟后" = TRUE
SELECT CURRENT_TIMESTAMP < CURRENT_TIMESTAMP + (5 * INTERVAL '1 minute');
?column?
----------
t
(1 row)
运算结果比较
-- "当前时间 - 当前时间的5分钟前 > 5分钟" = FALSE
SELECT CURRENT_TIMESTAMP - CURRENT_TIMESTAMP - (5 * INTERVAL '1 minute') > (5 * INTERVAL '1 minute');
?column?
----------
f
(1 row)
日期开始和结束(trunc)
获取当日开始
SELECT date_trunc('day', '2020-03-20 15:04:05'::TIMESTAMP);
-- 2020-03-20 00:00:00
获取当月开始
SELECT date_trunc('month', '2020-03-20 15:04:05'::TIMESTAMP);
-- 2020-03-01 00:00:00