暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL数据类型-Date

FortuneXu 2025-11-19
66

摘要:在本教程中,你将了解 PostgreSQLDATE 数据类型,以及如何使用它在表中存储日期数据。

PostgreSQL DATE 数据类型入门

PostgreSQL 中,您使用 DATE 数据类型在表中存储不带时间的日期。以下是定义 DATE 列的语法:

CREATE TABLE table_name (     column_name DATE, ... );

日期列可以存储公元前 4713 年到公元 5874897 年之间的日期。PostgreSQL 使用 4 字节来存储日期值。

要为 DATE 列设置默认值,需使用 DEFAULT 约束:

CREATE TABLE table_name ( column_name DATE DEFAULT default_date );

如果您想将当前日期设置为默认值,可以按如下方式使用 CURRENT_DATE 函数:

CREATE TABLE table_name ( column_name DATE DEFAULT CURRENT_DATE );

Date Input

PostgreSQL 接受多种日期格式,但建议使用 ISO 8601 格式,即日期输入采用 yyyy-mm-dd 。例如,2024-12-31 表示 December 31 , 2024

Date Output

PostgreSQL 允许你设置各种日期输出格式,就像日期输入格式一样。默认格式是 ISO 8601 格式。

PostgreSQL DATE 数据类型示例

以下示例创建了一个名为 stock_adjustments 的表,其中包含一个 DATE 列:

CREATE TABLE stock_adjustments ( id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, product_name VARCHAR(255) NOT NULL, quantity INT NOT NULL, adjustment_date DATE NOT NULL DEFAULT CURRENT_DATE );

stock_adjustments 表有一个 adjustment_date 列,用于表示调整日期。其值默认为当前日期。

如果在插入数据时不提供日期,PostgreSQL 会将当前日期插入到调整日期列中。

插入默认日期值

以下语句将在 stock_adjustments 表中插入一个新行:

INSERT INTO stock_adjustments (product_name, quantity) VALUES ('iPhone 16 Pro', 5) RETURNING *;

输出:

id | product_name | quantity | adjustment_date ----+---------------+----------+----------------- 1 | iPhone 16 Pro | 5 | 2024-12-08

在这个 INSERT 语句中,我们没有为调整日期列提供值;它默认是我们运行该语句当天的日期。

日期列的输出采用 ISO 8601 格式,即 yyyy-mm-dd 。调整日期为 2024-12-08 ,表示 December 08 , 2024

插入日期值

以下示例向 stock_adjustments 表中插入一行包含输入日期值的数据:

INSERT INTO stock_adjustments (product_name, quantity, adjustment_date) VALUES ('Galaxy S23 Ultra', 2, '2024-12-09') RETURNING *;

输出:

id | product_name | quantity | adjustment_date ----+------------------+----------+----------------- 2 | Galaxy S23 Ultra | 2 | 2024-12-09

在这个示例中,我们明确使用了 ISO 8601 格式的日期输入:2024-12-09 ,它表示 December 09 , 2024

从日期中提取日、月、年

extract() 函数从日期值中提取一个字段,该字段可以是日、月和年。

例如,以下语句使用 extract() 函数从调整日期列中提取日、月和年:

SELECT product_name, quantity, adjustment_date, extract(day from adjustment_date) d, extract(month from adjustment_date) m, extract(year from adjustment_date) y FROM stock_adjustments ORDER BY adjustment_date;

输出:

product_name | quantity | adjustment_date | d | m | y ------------------+----------+-----------------+---+----+------ iPhone 16 Pro | 5 | 2024-12-08 | 8 | 12 | 2024 Galaxy S23 Ultra | 2 | 2024-12-09 | 9 | 12 | 2024

格式化日期值

要将日期值格式化为特定格式,需使用 to_char() 函数。

例如,以下语句会检索库存调整数据,并将日期格式化为 Mon dd, yyyy 格式:

SELECT product_name, quantity, adjustment_date, to_char (adjustment_date, 'Month dd, yyyy') formatted_date FROM stock_adjustments ORDER BY adjustment_date;

输出:

product_name | quantity | adjustment_date | formatted_date ------------------+----------+-----------------+-------------------- iPhone 16 Pro | 5 | 2024-12-08 | December 08, 2024 Galaxy S23 Ultra | 2 | 2024-12-09 | December 09, 2024

为日期增加或减少天数

要向日期添加一天,需使用 + 运算符:

date + days

同样,要从日期中减去天数,可使用 - 运算符:

date - days

例如,以下语句将调整日期增加3天:

SELECT product_name, quantity, adjustment_date, adjustment_date + 3 approval_date FROM stock_adjustments ORDER BY approval_date;

输出:

product_name | quantity | adjustment_date | approval_date ------------------+----------+-----------------+--------------- iPhone 16 Pro | 5 | 2024-12-08 | 2024-12-11 Galaxy S23 Ultra | 2 | 2024-12-09 | 2024-12-12

总结

  • 使用 PostgreSQLDATE 类型在表中存储日期。
  • 使用 extract() 函数从日期中提取日、月和年。
  • 使用 to_char() 函数来格式化日期。
  • 使用 + 运算符向日期添加若干天。
  • 使用 - 运算符从日期中减去若干天。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论