日期/時間操作符
加減操作符:
+
?和?-
?可以用于日期、時間、時間戳和時間間隔的加減操作。
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);