📜  timestamp(0) postgresql (1)

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

PostgreSQL中的Timestamp

在 PostgreSQL 中,Timestamp 是一个数据类型,用于存储日期和时间。Timestamp 表示一个日期和时间的点,以 UTC 偏移量(协调世界时)为基础。Timestamp 通常用于记录时间戳、日志记录、和其他需要时间戳的应用程序中。

数据类型

在 PostgreSQL 中,Timestamp 数据类型有两种形式:timestamp 和 timestamptz,分别代表本地时间戳和 UTC 时间戳。

Timestamp 类型通常用于记录本地日期和时间,不考虑时区。使用 Timestamp 数据类型,数据库将日期和时间存储为本地时间戳,并且不包含时区信息。

Timestamptz 数据类型用于存储带有时区偏移量的时间戳。使用 Timestamptz 数据类型,数据库将日期和时间存储为 UTC 时间戳,并且包含时区信息。

存储格式

Timestamp 数据类型存储为 8 字节二进制字符串。PostgreSQL 支持多个输入和输出格式:ISO 8601、RFC 3339、SQL 标准格式、Unix 时间戳等。例如,以下输入都将被认为是有效的 timestamp 字符串:

  • '2004-10-19 10:23:54'
  • '2004-10-19T10:23:54'
  • '2004-10-19 10:23:54-07:00'
  • '2004-10-19T10:23:54Z'
函数

PostgreSQL 提供了许多函数来操作 Timestamp 类型的数据。以下是一些常用的函数:

  • now():返回当前时间戳,作为 Timestamp,不带时区信息。
  • current_timestamp:与 now() 功能相同,但是返回的带有时区信息。
  • extract(field FROM timestamp):用于从 Timestamp 中提取日期和时间组件(例如:year、month、day、hour、minute、second 等)。
  • date_trunc(field, timestamp):用于将 Timestamp 转换为指定的时间单位(例如:day、hour、minute、second 等)。
  • to_char(timestamp, format):用于将 Timestamp 转换为指定格式的字符。
示例
-- 创建一个表,包含一个列为 Timestamp 类型的字段
CREATE TABLE example_table (
    id serial PRIMARY KEY,
    timestamp_column timestamp
);

-- 插入 Timestamp 数据
INSERT INTO example_table (timestamp_column) VALUES 
('2021-09-07 12:34:56'), 
('2021-09-08 10:11:12'), 
('2021-09-09 09:08:07');

-- 选择所有的数据,输出为指定格式的字符
SELECT id, to_char(timestamp_column, 'YYYY-MM-DD HH24:MI:SS') AS timestamp_str FROM example_table;

以上示例将输出:

|id|timestamp_str| |---|---| |1|2021-09-07 12:34:56| |2|2021-09-08 10:11:12| |3|2021-09-09 09:08:07|

总结

PostgreSQL 中的 Timestamp 数据类型提供了灵活性和可读性,用于处理日期和时间数据。通过使用 PostgreSQL 提供的函数和格式化选项,可以轻松地将 Timestamp 转换为所需的格式,并对数据进行复杂的操作。