Последнее обновление
DATETIME_TO_UUID_V7
Описание
Генерирует нативный UUID v7 по дате и времени; возвращает NULL для входного значения NULL.
Псевдоним
dateTimeToUUIDv7.
Примечания по использованию
Эта функция использует собственный счётчик, независимый от счётчика UUID_V7(). Она не гарантирует глобальный порядок между BE и не является детерминированным способом кодирования даты и времени. Если счётчик переполняется при последовательных одинаковых входных значениях, закодированная временная метка сдвигается вперёд на одну миллисекунду.
Синтаксис
DATETIME_TO_UUID_V7(<datetime>)
Параметры
| Параметр | Описание |
|---|---|
<datetime> | Значение DATETIME с необязательной точностью до долей секунды, интерпретируемое в часовом поясе сеанса time_zone. |
Возвращаемое значение
Возвращает значение типа UUID. Возвращает NULL для NULL, недопустимой даты или даты и времени, которые после преобразования в UTC предшествуют началу эпохи Unix. Доли миллисекунды отбрасываются. Функция недетерминирована: повторные вызовы с одинаковыми датой и временем генерируют новые UUID.
Пример
SET time_zone = 'UTC';
SELECT UUID_VERSION(DATETIME_TO_UUID_V7(CAST('2026-09-10 12:34:56.789123' AS DATETIME(6)))) AS version,
UUID_V7_TO_DATETIME(DATETIME_TO_UUID_V7(CAST('2026-09-10 12:34:56.789123' AS DATETIME(6))), 'UTC') AS restored;
+---------+-------------------------+
| version | restored |
+---------+-------------------------+
| 7 | 2026-09-10 12:34:56.789 |
+---------+-------------------------+
SET time_zone = 'UTC';
SELECT DATETIME_TO_UUID_V7(CAST(NULL AS DATETIME)) AS null_input,
DATETIME_TO_UUID_V7(CAST('1969-12-31 23:59:59' AS DATETIME)) AS before_epoch,
UUID_V7_TO_DATETIME(DATETIME_TO_UUID_V7(CAST('1970-01-01 00:00:00' AS DATETIME)), 'UTC') AS epoch;
+------------+--------------+-------------------------+
| null_input | before_epoch | epoch |
+------------+--------------+-------------------------+
| NULL | NULL | 1970-01-01 00:00:00.000 |
+------------+--------------+-------------------------+