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

📅  最后修改于: 2023-12-03 14:45:35.357000             🧑  作者: Mango

PostgreSQL - 时间戳数据类型

在 PostgreSQL 中,时间戳是一种用于存储日期和时间的数据类型。它允许我们以非常精确的方式存储时间,并提供了多种方法来操作和使用这些时间戳。在本文中,我将为您介绍 PostgreSQL 中的时间戳数据类型及其常见用法。

时间戳数据类型

PostgreSQL 提供了两种不同的时间戳数据类型:TIMESTAMPTIMESTAMPTZ,它们都可以用来存储日期和时间信息。它们的区别在于 TIMESTAMP 存储本地时间,而 TIMESTAMPTZ 存储时区信息。

TIMESTAMP

TIMESTAMP 数据类型存储本地日期和时间信息。它可以存储的最小时间为 4713 BC,最大时间为 infinity

下面是一些示例:

-- 创建一个名为 events 的表,其中包含一个名为 event_time 的 TIMESTAMP 列
CREATE TABLE events (
   id SERIAL PRIMARY KEY,
   event_time TIMESTAMP
);

-- 插入当前时间
INSERT INTO events (event_time) VALUES (CURRENT_TIMESTAMP);

-- 插入指定时间
INSERT INTO events (event_time) VALUES ('2021-12-31 23:59:59');

-- 获取当前时间
SELECT CURRENT_TIMESTAMP;

-- 获取指定时间的年份
SELECT EXTRACT(YEAR FROM '2021-12-31 23:59:59'::TIMESTAMP);
TIMESTAMPTZ

TIMESTAMPTZ 数据类型存储带有时区信息的日期和时间。它可以存储的最小时间为 4713 BC,最大时间为 infinity。它支持的时区范围是 UTC-12UTC+14

下面是一些示例:

-- 创建一个名为 events 的表,其中包含一个名为 event_time 的 TIMESTAMPTZ 列
CREATE TABLE events (
   id SERIAL PRIMARY KEY,
   event_time TIMESTAMPTZ
);

-- 插入当前时间
INSERT INTO events (event_time) VALUES (CURRENT_TIMESTAMP);

-- 插入指定时间(带时区信息)
INSERT INTO events (event_time) VALUES ('2021-12-31 23:59:59+08');

-- 获取当前时间
SELECT CURRENT_TIMESTAMP;

-- 获取指定时间的时区信息
SELECT EXTRACT(TIMEZONE FROM '2021-12-31 23:59:59+08'::TIMESTAMPTZ);
总结

PostgreSQL 中的时间戳数据类型提供了一种非常方便的方式来存储日期和时间信息,并允许我们以各种方式操作和使用这些时间戳。在本文中,我们介绍了 TIMESTAMPTIMESTAMPTZ 数据类型及其常见用法,希望这能对您的项目有所帮助。