📜  PostgreSQL – 时间数据类型(1)

📅  最后修改于: 2023-12-03 15:03:49.613000             🧑  作者: Mango

PostgreSQL – 时间数据类型

在 PostgreSQL 中,有多种时间类型可以使用。这些时间类型主要用于存储日期和时间,并在查询中进行操作。

DATE

DATE 类型用于存储日期,其格式为:YYYY-MM-DD。这种类型不会存储时间,只会存储日期。在查询中,您可以使用 DATE_TRUNC 和 EXTRACT 函数来操作 DATE 类型。例如,您可以按年、月、日等单独提取日期。

SELECT EXTRACT(YEAR FROM date_col) AS year,
       EXTRACT(MONTH FROM date_col) AS month,
       EXTRACT(DAY FROM date_col) AS day
FROM table_name;
TIME

TIME 类型用于存储时间,其格式为:HH:MM:SS.fff。在这个格式中,HH 表示小时(00-23),MM 表示分钟(00-59),SS 表示秒钟(00-59),fff 表示毫秒(0-999)。您可以使用 EXTRACT 函数来提取 TIME 类型中的小时、分钟和秒钟。

SELECT EXTRACT(HOUR FROM time_col) AS hour,
       EXTRACT(MINUTE FROM time_col) AS minute,
       EXTRACT(SECOND FROM time_col) AS second
FROM table_name;
TIMESTAMP

TIMESTAMP 类型用于存储日期和时间,其格式为:YYYY-MM-DD HH:MI:SS.fff。此类型可以同时存储日期和时间,也可以存储毫秒级精度。您可以使用 EXTRACT 函数来提取 TIMESTAMP 类型中的年、月、日、小时、分钟和秒钟。

SELECT EXTRACT(YEAR FROM timestamp_col) AS year,
       EXTRACT(MONTH FROM timestamp_col) AS month,
       EXTRACT(DAY FROM timestamp_col) AS day,
       EXTRACT(HOUR FROM timestamp_col) AS hour,
       EXTRACT(MINUTE FROM timestamp_col) AS minute,
       EXTRACT(SECOND FROM timestamp_col) AS second
FROM table_name;
INTERVAL

INTERVAL 类型用于存储两个日期/时间之间的时间间隔。例如,您可以使用 INTERVAL 类型来计算两个日期之间的天数,小时数,分钟数等。

SELECT date_col - '2021-01-01' AS days_interval,
       time_col - '12:00:00' AS minutes_interval
FROM table_name;

在查询中,您可以使用类似于数学计算的方式来计算 INTERVAL 类型与 DATE/TIME/TIMESTAMP 之间的差异。例如,上面的查询计算了一个日期列与 2021 年 1 月 1 日之间的天数差异,并计算了一个时间列与中午 12 点之间的分钟差异。

总结

PostgreSQL 中有许多时间类型,用于存储和操作日期和时间。这些类型包括 DATE,TIME,TIMESTAMP 和 INTERVAL。无论您需要计算两个日期之间的时间差异,还是提取一个 TIMESTAMP 列中的小时和分钟,PostgreSQL 都提供了相应的函数和语法来帮助您完成这些任务。