一、入门概述
PostgreSQL是一种开源的对象关系型数据库,它支持高级数据类型,例如数组、JSON等,这让它成为了数据分析、地理信息系统、传感器等领域的首选。PostgreSQL提供完整的日期/时间操作支持,其中也包括了日期类型的处理。在这一章中,我们会学习如何使用PostgreSQL中的日期类型以及与日期相关的各种函数、操作符等等。
二、日期类型的数据结构
PostgreSQL中定义日期类型为"date",它占4个字节的存储空间。日期类型的值由年、月、日所组成,其范围为公元前4713年到公元后5874897年。当需要对某个日期进行计算时,需要使用 "interval" 类型代表时间间隔。 "time" 类型代表一段时间内的具体时刻。
CREATE TABLE example( id INTEGER PRIMARY KEY, mydate DATE, myinterval INTERVAL, mytime TIME );
三、日期函数
1. date_part函数
date_part函数可用于从日期/时间值中提取特定部分。函数接受两个参数:第一个参数指定部分,第二个参数指定时间戳或日期。它支持的部分有:年、月、日、小时、分钟、秒。该函数返回一个DOUBLE PRECISION值,可以是整数或小数
SELECT date_part('hour', TIMESTAMP '2020-05-11 13:50:10'); -- 返回 13 SELECT date_part('minute', TIMESTAMP '2020-05-11 13:50:10') as column; -- 返回 50
2. date_trunc函数
date_trunc函数用于截断日期或时间戳以生成所需的结果。函数接受两个参数:第一个参数指定截断部分,第二个参数指定时间戳或日期。它支持的截断部分有:年、月、日、小时、分钟、秒
SELECT date_trunc('year', TIMESTAMP '2020-05-11 13:50:10'); -- 返回 2020-01-01 00:00:00 SELECT date_trunc('hour', TIMESTAMP '2020-05-11 13:50:10'); -- 返回 2020-05-11 13:00:00
3. current_date函数
current_date函数返回当前系统日期
SELECT current_date; -- 返回当前日期:2021-08-19
4. age函数
age函数用于计算日期之间的差异。函数接受两个参数,分别是开始和结束日期。当第一个日期早于第二个日期时,函数返回的值为正数
SELECT age(DATE '2021-08-01', DATE '2021-08-19'); -- 返回: 18 days
四、日期操作符
1. + / - 操作符
在PostgreSQL中,可以使用 + 操作符将日期/时间戳与时间间隔相加,或使用 - 操作符将两个日期/时间戳相减得出时间间隔。
SELECT DATE '2021-08-01' + INTERVAL '3 months'; -- 返回 2021-11-01 SELECT TIMESTAMP '2021-08-19 10:30:00' - TIMESTAMP '2021-08-19 10:00:00'; -- 返回 00:30:00
2. << 操作符
该操作符用于比较两个日期/时间戳是否为同一天。
SELECT DATE '2021-08-19' << DATE '2021-08-20'; -- 返回 true SELECT TIMESTAMP '2021-08-19 12:00:00' << TIMESTAMP '2021-08-20 01:30:00'; -- 返回 false
3. >> 操作符
该操作符用于比较两个日期/时间戳是否为连续的两天。即第一个日期/时间戳加一天后是否与第二个日期/时间戳相同。
SELECT DATE '2021-08-19' >> DATE '2021-08-20'; -- 返回 false SELECT DATE '2021-08-19' >> DATE '2021-08-20' - INTERVAL '1 day'; -- 返回 true
五、日期类型的数据输入与输出
PostgreSQL遵循ISO格式:YYYY-MM-DD来表示日期。同时PostgreSQL也支持其他常用的日期格式。例如:
SELECT DATE '2021/08/19'; -- 返回 2021-08-19 SELECT DATE '19-Aug-2021'; -- 返回 2021-08-19 SELECT TIMESTAMP '2021-08-19 12:30:00+08'; -- 返回 2021-08-19 12:30:00
总结
PostgreSQL提供了丰富的日期/时间处理操作,包括日期函数、日期操作符等,使得我们可以更简单、方便地处理日期类型的数据。同时PostgreSQL也支持对不同格式的日期数据进行输入输出操作。