9.14. Функции генерирования UUID #

В Таблице 9.45 перечислены функции Postgres Pro, которые можно использовать для генерирования UUID.

Таблица 9.45. Функции генерирования UUID

Функция

Описание

Пример(ы)

gen_random_uuid ( ) → uuid

uuidv4 ( ) → uuid

Генерирует случайный UUID версии 4.

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

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

uuidv7 ( [shift interval] ) → uuid

Генерирует UUID версии 7 (упорядоченный по времени). Временная метка вычисляется следующим образом: временная метка UNIX с точностью до миллисекунды + временная метка с точностью до доли миллисекунды + случайная временная метка. Необязательный параметр shift сдвигает вычисленную временную метку на заданный interval. Бесконечные интервальные значения не допускаются. Сдвинутая временная метка должна находиться в диапазоне, поддерживаемом 48-битным полем временной метки UUID версии 7 (в миллисекундах): от 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

Извлекает timestamp with time zone из UUID версии 1 или 7. Для других версий эта функция возвращает 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

Извлекает версию из UUID одного из вариантов, описанных в RFC 9562. Для других вариантов эта функция возвращает NULL. Например, для UUID, сгенерированного gen_random_uuid(), эта функция вернёт 4.

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

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


В Postgres Pro также реализованы показанные в Таблице 9.1 операторы для сравнения значений UUID.

За подробным описанием типа данных uuid в Postgres Pro обратитесь к Разделу 8.12.

9.14. UUID Functions #

Table 9.45 shows the Postgres Pro functions that can be used to generate UUIDs.

Table 9.45. UUID Generation Functions

Function

Description

Example(s)

gen_random_uuid ( ) → uuid

uuidv4 ( ) → uuid

Generates a version 4 (random) UUID

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

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

uuidv7 ( [ shift interval ] ) → uuid

Generates a version 7 (time-ordered) UUID. The timestamp is computed using UNIX timestamp with millisecond precision + sub-millisecond timestamp + random. The optional parameter shift will shift the computed timestamp by the given interval. Infinite interval values are not accepted. The shifted timestamp must fall within the range supported by UUID version 7's 48-bit millisecond timestamp field: from 1970-01-01 00:00:00 UTC to approximately year 10889. An error is raised if the resulting timestamp is outside this range.

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


Note

The uuid-ossp module provides additional functions that implement other standard algorithms for generating UUIDs.

Table 9.46 shows the PostgreSQL functions that can be used to extract information from UUIDs.

Table 9.46. UUID Extraction Functions

Function

Description

Example(s)

uuid_extract_timestamp ( uuid ) → timestamp with time zone

Extracts a timestamp with time zone from a UUID of version 1 or 7. For other versions, this function returns null. Note that the extracted timestamp is not necessarily exactly equal to the time the UUID was generated; this depends on the implementation that generated the UUID.

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

uuid_extract_version ( uuid ) → smallint

Extracts the version from a UUID of one of the variants described by RFC 9562. For other variants, this function returns null. For example, for a UUID generated by gen_random_uuid(), this function will return 4.

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

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


Postgres Pro also provides the usual comparison operators shown in Table 9.1 for UUIDs.

See Section 8.12 for details on the data type uuid in Postgres Pro.

FAQ