PostgreSQL DATE 数据类型介绍
本文介绍了在 PostgreSQL 中如何使用 DATE 类型以及一些用于处理 DATE 数据的有用的函数。
PostgreSQL 支持 DATE
数据类型,以存储日期值。
PostgreSQL DATE
数据类型使用 yyyy-mm-dd
格式存储日期值,并且每个日期值占用 4 个字节。
PostgreSQL DATE
语法
要创建一个 DATE
数据类型的列,请使用如下语法:
column_name DATE column_constraint
您可以将 yyyy-mm-dd
格式的文本日期值插入到日期列中。
您可以使用类型转换将一个文本格式的日期值转为日期类型,如下:
'2022-08-30'::DATE
PostgreSQL DATE
实例
使用下面的语句创建一个新表,名称为 test_date
:
CREATE TABLE test_date (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
date_value DATE NOT NULL DEFAULT CURRENT_DATE
);
该 test_date
表由两列组成:
插入 DATE 数据
要将数据插入 DATE 列,您必须确保数据采用 yyyy-mm-dd
格式。以下 INSERT
语句向 test_date
表中插入几个新行。
INSERT INTO test_date (date_value)
VALUES
('2022-08-29'),
('2022-08-30'),
('2022-08-31')
RETURNING *;
id | date_value
----+------------
1 | 2022-08-29
2 | 2022-08-30
3 | 2022-08-31
(3 rows)
更新 DATE 数据
要更新 DATE 数据,使用该 UPDATE
语句并传入一个 yyyy-mm-dd
格式的值:
UPDATE test_date
SET date_value = '2022-09-01'
WHERE id = 3
RETURNING *;
id | date_value
----+------------
3 | 2022-09-01
(1 row)
在 WHERE 条件中使用 DATE 数据
您可以在 WHERE
子句中使用 DATE 列过滤数据。
要查找日期为 2022-08-30
,请使用以下语句:
SELECT *
FROM test_date
WHERE date_value = '2022-08-30';
id | date_value
----+------------
2 | 2022-08-30
(1 row)
您还可以查找日期小于 2022-09-01
的所有的行,如下:
SELECT *
FROM test_date
WHERE date_value < '2022-09-01';
id | date_value
----+------------
1 | 2022-08-29
2 | 2022-08-30
(2 rows)
输出指定格式的日期值
PostgreSQL 提供了 TO_CHAR()
函数以按照指定格式输出日期值。 TO_CHAR()
函数接受两个参数。第一个参数是要格式化的日期值,第二个参数是格式。
要以 yyyy/mm/dd
格式显示日期,请使用以下语句:
SELECT
id,
to_char(date_value, 'yyyy/mm/dd')
FROM
test_date;
id | to_char
----+------------
1 | 2022/08/29
2 | 2022/08/30
3 | 2022/09/01
(3 rows)
PostgreSQL 日期函数
PostgreSQL 提供了很多 日期 相关的函数。
要获取当前的日期,请使用 current_date
:
SELECT current_date;
current_date
--------------
2022-08-31
要计算距离某个日期的年龄,请是 age()
函数:
SELECT age('2001-01-01');
age
-------------------------
21 years 7 mons 30 days
要将一个指定格式的日期字符串转为日期值,请使用 to_date()
函数:
SELECT to_date('2022-08-31', 'YYYY-MM-DD');
to_date
------------
2022-08-31
要获取日期值中的年、月、日部分,请使用 date_part()
函数:
SELECT
date_part('year', current_date) "year",
date_part('month', current_date) "month",
date_part('day', current_date) "day";
year | month | day
------+-------+-----
2022 | 8 | 31
结论
本文讨论了 PostgreSQL DATE 数据类型,以及一些常用的 DATE 操作符和函数。