📚 目录
🛠️ 概述
PostgreSQL 提供了一组丰富的时间和日期处理函数以及操作符,用于处理日期和时间值。通过这些函数,用户可以进行各种常见的日期/时间运算,如获取当前时间、日期格式化、时间差计算等。
PostgreSQL 支持多种日期和时间数据类型,如 DATE
、TIME
、TIMESTAMP
、INTERVAL
等,下面将介绍一些常用的日期/时间函数和操作符。
📝 时间/日期函数
CURRENT_DATE 和 CURRENT_TIME
CURRENT_DATE
返回当前的日期(不包含时间),格式为 YYYY-MM-DD
。CURRENT_TIME
返回当前的时间(不包含日期),格式为 HH:MM:SS
。
SELECT CURRENT_DATE; -- 返回当前日期
SELECT CURRENT_TIME; -- 返回当前时间
NOW() 和 CURRENT_TIMESTAMP
NOW()
和 CURRENT_TIMESTAMP
返回当前的日期和时间(TIMESTAMP
类型),格式为 YYYY-MM-DD HH:MM:SS
。
SELECT NOW(); -- 返回当前日期和时间
SELECT CURRENT_TIMESTAMP; -- 同样返回当前日期和时间
这两个函数通常用于记录日志、审计等场景。
AGE() 函数
AGE()
函数用于计算两个时间戳之间的差异,并返回一个 INTERVAL
类型的值。结果包括年、月、天、小时、分钟、秒。
SELECT AGE(TIMESTAMP '2025-04-08', TIMESTAMP '2020-04-08');
此查询将返回从 2020-04-08 到 2025-04-08 之间的时间差。
DATE_TRUNC() 函数
DATE_TRUNC()
函数用于将日期或时间截断为指定的精度。常见的精度有:year
、month
、day
、hour
、minute
、second
等。
SELECT DATE_TRUNC('month', NOW()); -- 返回当前日期的月份开始时间
SELECT DATE_TRUNC('year', NOW()); -- 返回当前日期的年份开始时间
DATE_TRUNC()
通常用于按时间粒度对数据进行汇总。
EXTRACT() 函数
EXTRACT()
函数用于从日期或时间值中提取指定的部分(如年份、月份、天数等)。
SELECT EXTRACT(YEAR FROM NOW()); -- 提取当前年份
SELECT EXTRACT(MONTH FROM NOW()); -- 提取当前月份
SELECT EXTRACT(DAY FROM NOW()); -- 提取当前日期
EXTRACT()
函数非常适用于需要按年、月、日等维度进行数据分析的场景。
TO_CHAR() 函数
TO_CHAR()
函数将日期或时间格式化为指定的字符串格式。它允许使用不同的格式模式,如 YYYY
(年)、MM
(月)、DD
(日)、HH24
(24小时制小时)等。
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS'); -- 格式化当前时间为 'YYYY-MM-DD HH:MI:SS'
SELECT TO_CHAR(NOW(), 'Day, DD Mon YYYY'); -- 格式化当前时间为 'Day, DD Mon YYYY'
TO_CHAR()
在生成报告和输出特定日期格式时非常有用。
📝 时间/日期操作符
加法操作符
日期/时间加法用于对 DATE
、TIME
、TIMESTAMP
类型的值进行加法运算。可以使用 +
操作符将时间间隔(INTERVAL
)加到日期或时间上。
SELECT NOW() + INTERVAL '1 day'; -- 当前时间加一天
SELECT DATE '2025-04-08' + INTERVAL '2 months'; -- 日期加两个月
SELECT TIME '12:30:00' + INTERVAL '30 minutes'; -- 时间加30分钟
INTERVAL
数据类型允许以多种方式表示时间间隔(如天、小时、分钟、秒等)。
减法操作符
日期/时间减法用于从日期或时间中减去另一个时间值或时间间隔。可以使用 -
操作符进行此类运算。
SELECT NOW() - INTERVAL '1 hour'; -- 当前时间减去一个小时
SELECT DATE '2025-04-08' - INTERVAL '3 days'; -- 日期减去三天
SELECT TIME '12:30:00' - INTERVAL '15 minutes'; -- 时间减去15分钟
在处理时间差时,减法操作符非常实用,特别是在计算持续时间时。
📘 参考资料
- PostgreSQL 官方文档:Date/Time Functions
- 更多 PostgreSQL 技巧整理自:www.52kanjuqing.com
发表回复