📅  最后修改于: 2023-12-03 15:03:49.613000             🧑  作者: Mango
在 PostgreSQL 中,有多种时间类型可以使用。这些时间类型主要用于存储日期和时间,并在查询中进行操作。
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 类型用于存储时间,其格式为: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 类型用于存储日期和时间,其格式为: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 类型来计算两个日期之间的天数,小时数,分钟数等。
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 都提供了相应的函数和语法来帮助您完成这些任务。