您的位置:

PostgreSQL日期操作指南

一、入门概述

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也支持对不同格式的日期数据进行输入输出操作。