PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

9.14. UUID 函数 #

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

Table 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


Note

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

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

Table 9.46. UUID 提取函数

函数

说明

示例

uuid_extract_timestamp ( uuid ) → timestamp with time zone

从一个版本 1 或 7 的 UUID 中提取一个 timestamp with time zone。 对于其他版本, 这个函数返回空。 注意, 提取出的时间戳不一定与 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 中提取版本。 对于其他变体, 这个函数返回空。 例如, 对于由 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 提供了 Table 9.1 中展示的常规比较操作符。

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