日期/时间操作符
加减操作符:
+
和 -
可以用于日期、时间、时间戳和时间间隔的加减操作。
SELECT '2024-01-01'::date + INTERVAL '1 day' as "date"; ;
-- 结果:2024-01-02SELECT '2024-01-01 12:00:00'::timestamp - INTERVAL '2 hours' as "timestamp "; -- 结果:2024-01-01 10:00:00
时间间隔操作符:
INTERVAL
用于表示时间间隔。
SELECT INTERVAL '1 year 2 months 3 days' ; -- 结果:1 year 2 months 3 days
日期/时间函数
获取当前日期/时间:
CURRENT_DATE
:返回当前日期。CURRENT_TIME
:返回当前时间,包括时区。CURRENT_TIMESTAMP
:返回当前日期和时间,包括时区。LOCALTIME
:返回当前时间,不包括时区。LOCALTIMESTAMP
:返回当前日期和时间,不包括时区。
SELECT CURRENT_DATE;
-- 结果:2024-07-13SELECT CURRENT_TIME;
-- 结果:14:30:00+08:00SELECT CURRENT_TIMESTAMP;
-- 结果:2024-07-13 15:53:29.856284+08
提取日期/时间部分:
EXTRACT(field FROM source)
:从日期/时间中提取指定部分。
SELECT EXTRACT(YEAR FROM '2024-01-01'::date);
-- 结果:2024SELECT EXTRACT(HOUR FROM '14:30:00'::time);
-- 结果:14
日期/时间格式化:
TO_CHAR(timestamp, format)
:将日期/时间格式化为字符串。
SELECT TO_CHAR('2024-07-13 15:53:29'::timestamp, 'YYYY-MM-DD HH24:MI:SS');-- 结果:2024-07-13 15:53:29
日期/时间计算:
AGE(timestamp, timestamp)
:计算两个日期/时间之间的差值。
SELECT AGE('2024-01-01'::date, '2020-01-01'::date); -- 结果:4 years
日期/时间调整:
DATE_TRUNC(field, source)
:将日期/时间截断到指定精度。
SELECT DATE_TRUNC('month', '2024-07-15'::date); -- 结果:2024-07-01
些函数和操作符示例
-- 获取当前日期和时间
SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;-- 提取日期部分
SELECT EXTRACT(YEAR FROM CURRENT_DATE) AS year,EXTRACT(MONTH FROM CURRENT_DATE) AS month,EXTRACT(DAY FROM CURRENT_DATE) AS day;-- 格式化日期和时间
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS');-- 计算日期差值
SELECT AGE('2024-01-01'::date, '2023-01-01'::date);-- 截断日期到指定精度
SELECT DATE_TRUNC('month', '2024-01-15'::date);