--- title: "UUID Functions" id: functions-uuid pg_version: "20devel" --- ## 9.15. UUID Functions [Table 9.46](functions-uuid.md#func_uuid_gen_table) shows the PostgreSQL functions that can be used to generate UUIDs. **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 [Section F.51](uuid-ossp.md) module provides additional functions that implement other standard algorithms for generating UUIDs. [Table 9.47](functions-uuid.md#func_uuid_extract_table) shows the PostgreSQL functions that can be used to extract information from UUIDs. **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](https://datatracker.ietf.org/doc/html/rfc9562). 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 | PostgreSQL also provides the usual comparison operators shown in [Table 9.1](functions-comparison.md#functions-comparison-op-table) for UUIDs. See [Section 8.12](datatype-uuid.md) for details on the data type `uuid` in PostgreSQL.