↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13

9.14. UUID 函数 #

表 9.45 展示了 PostgreSQL 中可用于生成 UUID 的函数。

表 9.45. UUID 生成函数

函数

描述

示例

gen_random_uuid ( ) → uuid

uuidv4 ( ) → uuid

生成一个版本 4(随机)的 UUID

gen_random_uuid() → 5b30857f-0bfa-48b5-ac0b-5c64e28078d1

uuidv4() → b42410ee-132f-42ee-9e4f-09a6485c95b8

uuidv7 ( [ shift interval ] ) → uuid

生成一个版本 7(按时间排序)的 UUID。其时间戳由 UNIX 时间戳(毫秒精度)加上亚毫秒时间戳和随机值计算得到。可选参数 shift 会按给定的 interval 偏移计算出的时间戳。不接受无穷 interval 值。偏移后的时间戳必须位于 UUID 版本 7 的 48 位毫秒时间戳字段所支持的范围内:从 1970-01-01 00:00:00 UTC 到大约 10889 年。如果结果时间戳超出此范围,则会引发错误。

uuidv7() → 019535d9-3df7-79fb-b466-fa907fa17f9e


注意

uuid-ossp 模块还提供了额外的函数,用于实现其他标准 UUID 生成算法。

表 9.46 展示了 PostgreSQL 中可用于从 UUID 提取信息的函数。

表 9.46. UUID 提取函数

函数

描述

示例

uuid_extract_timestamp ( uuid ) → timestamp with time zone

从版本 1 或 7 的 UUID 中提取 timestamp with time zone。对于其他版本,该函数返回 null。注意,提取出的时间戳不一定与 UUID 生成时刻完全一致;这取决于生成该 UUID 的实现。

uuid_extract_timestamp('019535d9-3df7-79fb-b466-​fa907fa17f9e'::uuid) → 2025-02-23 21:46:24.503-05

uuid_extract_version ( uuid ) → smallint

从符合 RFC 9562 所描述某一变体的 UUID 中提取版本号。对于其他变体,该函数返回 null。例如,对于由 gen_random_uuid() 生成的 UUID,该函数将返回 4。

uuid_extract_version('41db1265-8bc1-4ab3-992f-​885799a4af1d'::uuid) → 4

uuid_extract_version('019535d9-3df7-79fb-b466-​fa907fa17f9e'::uuid) → 7


PostgreSQL 也为 UUID 提供了表 9.1 中展示的常用比较操作符。

关于 PostgreSQL 中 uuid 数据类型的细节,请参见第 8.12 节。

报告文档问题

阅读 上游文档. 通过 PostgreSQL 文档反馈表单.