Skip to main content
Last updated on

UUID_V7_TO_DATETIME

Description​

Extracts the Unix millisecond timestamp from a UUID v7 and converts it to a date and time in the selected time zone; returns NULL for NULL input.

Alias​

UUIDv7ToDateTime.

Syntax​

UUID_V7_TO_DATETIME(<uuid> [, <time_zone>])

Parameters​

ParameterDescription
<uuid>A value of type UUID.
<time_zone>Optional constant string, such as UTC, Asia/Shanghai, or +08:00. Defaults to the session time_zone. A varying time-zone column is not allowed; an invalid zone raises an error.

Return Value​

Returns the DATETIME(3) type. Returns NULL if the UUID or explicit time zone is NULL, or if the converted date and time is outside the DATETIME range. If the version field is not 7, returns the Unix epoch (1970-01-01 00:00:00 UTC) in the selected time zone, rather than NULL. It does not validate UUID variant bits.

Example​

SET time_zone = 'UTC';
SELECT UUID_V7_TO_DATETIME(CAST('00000000-0001-7000-8000-000000000000' AS UUID)) AS session_time,
UUID_V7_TO_DATETIME(CAST('00000000-0001-7000-8000-000000000000' AS UUID), 'Asia/Shanghai') AS shanghai_time;
+-------------------------+-------------------------+
| session_time | shanghai_time |
+-------------------------+-------------------------+
| 1970-01-01 00:00:00.001 | 1970-01-01 08:00:00.001 |
+-------------------------+-------------------------+
SELECT UUID_V7_TO_DATETIME(CAST('550e8400-e29b-41d4-a716-446655440000' AS UUID), 'UTC') AS non_v7,
UUID_V7_TO_DATETIME(CAST(NULL AS UUID), 'UTC') AS null_input,
UUID_V7_TO_DATETIME(CAST('550e8400-e29b-41d4-a716-446655440000' AS UUID), NULL) AS null_zone,
UUID_V7_TO_DATETIME(CAST('ffffffff-ffff-7000-8000-000000000000' AS UUID), 'UTC') AS out_of_range;
+-------------------------+------------+-----------+--------------+
| non_v7 | null_input | null_zone | out_of_range |
+-------------------------+------------+-----------+--------------+
| 1970-01-01 00:00:00.000 | NULL | NULL | NULL |
+-------------------------+------------+-----------+--------------+