Функции для работы с UUID
Генерация UUIDv7
Сгенерированный UUID содержит 48-битный таймстамп в миллисекундах Unix-времени, за которым следуют версия «7» (4 бита), счётчик (42 бита) для различения UUID в пределах одной миллисекунды (включая поле варианта «2» — 2 бита) и случайное поле (32 бита).
Для любого заданного таймстампа (unix_ts_ms) счётчик начинается со случайного значения и увеличивается на 1 для каждого нового UUID до тех пор, пока таймстамп не изменится. В случае переполнения счётчика поле таймстампа увеличивается на 1, а счётчик сбрасывается на новое случайное начальное значение.
Функции генерации UUID гарантируют, что поле счётчика в пределах одного таймстампа монотонно возрастает во всех вызовах функции в параллельно выполняющихся потоках и запросах.
Генерация Snowflake ID
Сгенерированный Snowflake ID содержит текущую Unix-метку времени в миллисекундах (41 бит + 1 старший нулевой бит), за которой следуют идентификатор машины (10 бит) и счётчик (12 бит) для различения идентификаторов в пределах одной миллисекунды. Для любой заданной метки времени (unix_ts_ms) счётчик начинается с 0 и увеличивается на 1 для каждого нового Snowflake ID до изменения метки времени. В случае переполнения счётчика поле метки времени увеличивается на 1, а счётчик сбрасывается в 0.
Сгенерированные Snowflake ID основаны на эпохе UNIX 1970-01-01. Хотя не существует стандарта или рекомендаций для эпохи Snowflake ID, реализации в других системах могут использовать другую эпоху, например Twitter/X (2010-11-04) или Mastodon (2015-01-01).
UUIDNumToString
Впервые представлена в версии v1.1
Принимает двоичное представление UUID, формат которого может быть дополнительно указан через параметр variant (по умолчанию Big-endian), и возвращает строку из 36 символов в текстовом представлении.
Синтаксис
Аргументы
binary— Двоичное представление UUID.FixedString(16)variant— Вариант, как указано в RFC4122. 1 =Big-endian(по умолчанию), 2 =Microsoft.(U)Int*
Возвращаемое значение
Возвращает UUID в виде строки. String
Примеры
Пример использования
Вариант от Microsoft
UUIDStringToNum
Появилась в: v1.1
Принимает строку длиной 36 символов в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx и возвращает FixedString(16) в виде её бинарного представления, формат которого может быть дополнительно указан параметром variant (по умолчанию Big-endian).
Синтаксис
Аргументы
string— строка или фиксированная строка длиной 36 символовStringилиFixedString(36)variant— вариант в соответствии с RFC4122. 1 =Big-endian(по умолчанию), 2 =Microsoft.(U)Int*
Возвращаемое значение
Возвращает двоичное представление string. FixedString(16)
Примеры
Пример использования
Вариант Microsoft
UUIDToNum
Введена в версии v24.5
Принимает UUID и возвращает его бинарное представление в виде FixedString(16), при этом формат может быть дополнительно задан параметром variant (по умолчанию Big-endian).
Эта функция заменяет использование двух отдельных функций UUIDStringToNum(toString(uuid)), поэтому для извлечения байтов из UUID не требуется промежуточное преобразование UUID в строку.
Синтаксис
Аргументы
uuid— UUID.StringилиFixedStringvariant— вариант в соответствии с RFC4122. 1 =Big-endian(по умолчанию), 2 =Microsoft.(U)Int*
Возвращаемое значение
Возвращает двоичное представление UUID. FixedString(16)
Примеры
Пример использования
Вариант от Microsoft
UUIDv7ToDateTime
Появилась в версии: v24.5
Возвращает временную составляющую (timestamp) UUID версии 7.
Синтаксис
Аргументы
uuid— UUID версии 7.Stringtimezone— Необязательный параметр. Имя часового пояса для возвращаемого значения.String
Возвращаемое значение
Возвращает метку времени с точностью до миллисекунд. Если UUID не является корректным UUID версии 7, возвращает 1970-01-01 00:00:00.000. DateTime64(3)
Примеры
Пример использования
С часовым поясом
dateTime64ToSnowflake
Добавлена в: v21.10
Эта функция устарела и может быть использована только в том случае, если включена настройка allow_deprecated_snowflake_conversion_functions.
Функция будет удалена в какой‑то момент в будущем.
Используйте вместо неё функцию dateTime64ToSnowflakeID.
Преобразует DateTime64 в первый Snowflake ID в заданный момент времени.
Синтаксис
Аргументы
value— дата и время.DateTime64
Возвращаемое значение
Возвращает входное значение, преобразованное в первый идентификатор Snowflake для этого момента времени. Int64
Примеры
Пример использования
dateTime64ToSnowflakeID
Добавлена в версии: v24.6
Преобразует DateTime64 в первый Snowflake ID для заданного момента времени.
Синтаксис
Аргументы
value— Дата и время.DateTime64epoch— Эпоха Snowflake ID в миллисекундах, прошедших с 1970-01-01. По умолчанию — 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657.UInt*
Возвращаемое значение
Входное значение, преобразованное в UInt64
Примеры
Простой пример
dateTimeToSnowflake
Добавлена в: v21.10
Эта функция объявлена устаревшей и может использоваться только в том случае, если включён параметр allow_deprecated_snowflake_conversion_functions.
Функция будет удалена в какой-то момент в будущем.
Используйте вместо неё функцию dateTimeToSnowflakeID.
Преобразует значение DateTime в первый Snowflake ID в заданный момент времени.
Синтаксис
Аргументы
value— дата и время.DateTime
Возвращаемое значение
Возвращает первый идентификатор Snowflake для этого момента времени. Int64
Примеры
Пример использования
dateTimeToSnowflakeID
Добавлена в версии: v24.6
Преобразует значение DateTime в первый Snowflake ID для указанного момента времени.
Синтаксис
Аргументы
value— дата и время.DateTimeepoch— эпоха для Snowflake ID в миллисекундах, отсчитываемых с 1970-01-01. Значение по умолчанию — 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657.UInt*
Возвращаемое значение
Входное значение, преобразованное в UInt64
Примеры
Простой пример
dateTimeToUUIDv7
Добавлена в версии: v25.9
Преобразует значение DateTime в UUIDv7 в указанное время.
См. раздел «UUIDv7 generation» для подробностей о структуре UUID, управлении счётчиком и гарантиях при параллельном использовании.
По состоянию на сентябрь 2025 года UUID версии 7 находятся в статусе черновика, и их структура может измениться в будущем.
Синтаксис
Аргументы
value— Дата и время.DateTime
Возвращаемое значение
Возвращает UUIDv7. UUID
Примеры
Пример использования
несколько UUID для одной и той же метки времени
generateSnowflakeID
Появилась в версии v24.6
Генерирует Snowflake ID.
Функция generateSnowflakeID гарантирует, что поле счётчика в составе метки времени монотонно увеличивается во всех вызовах функции в параллельно выполняющихся потоках и запросах.
См. раздел «Генерация Snowflake ID» для получения подробностей реализации.
Синтаксис
Аргументы
expr— Произвольное выражение, используемое для обхода устранения общих подвыражений, если функция вызывается несколько раз в запросе. Значение выражения не влияет на возвращаемый Snowflake ID. Необязательный параметр.machine_id— Идентификатор машины, используются младшие 10 бит. Int64. Необязательный параметр.
Возвращаемое значение
Возвращает Snowflake ID. UInt64
Примеры
Пример использования
Несколько идентификаторов Snowflake, генерируемых для одной строки
С выражением и идентификатором хоста
generateUUIDv4
Впервые появилась в версии v1.1
Синтаксис
Аргументы
expr— Необязательный аргумент. Произвольное выражение, используемое для обхода устранения общих подвыражений, если функция вызывается несколько раз в запросе. Значение выражения не влияет на возвращаемый UUID.
Возвращаемое значение
Возвращает UUIDv4. UUID
Примеры
Пример использования
Устранение общих подвыражений
generateUUIDv7
Добавлено в: v24.5
Генерирует идентификатор версии 7 UUID.
См. раздел «Генерация UUIDv7» для подробностей о структуре UUID, управлении счётчиком и гарантиях при конкурентном доступе.
По состоянию на сентябрь 2025 года UUID версии 7 имеют статус черновика, и их структура может измениться в будущем.
Синтаксис
Аргументы
expr— необязательное произвольное выражение, используемое для обхода устранения общих подвыражений, если функция вызывается несколько раз в одном запросе. Значение выражения не влияет на возвращаемый UUID.Any
Возвращаемое значение
Возвращает UUIDv7. UUID
Примеры
Пример использования
Устранение общих подвыражений
readWKTLineString
Добавлена в: v
Разбирает представление геометрии LineString в формате Well-Known Text (WKT) и возвращает его во внутреннем формате ClickHouse.
Синтаксис
Аргументы
wkt_string— входная строка WKT, представляющая геометрию типа LineString.String
Возвращаемое значение
Функция возвращает внутреннее представление геометрии типа LineString в ClickHouse.
Примеры
Первый вызов
второй вызов
snowflakeIDToDateTime
Появилась в версии: v24.6
Возвращает временную компоненту Snowflake ID как значение типа DateTime.
Синтаксис
Аргументы
value— идентификатор Snowflake.UInt64epoch— необязательный параметр. Эпоха идентификатора Snowflake в миллисекундах, прошедших с 1970-01-01. По умолчанию — 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657.UInt*time_zone— необязательный параметр. Часовой пояс. Функция интерпретируетtime_stringв соответствии с часовым поясом.String
Возвращаемое значение
Возвращает компонент метки времени из value. DateTime
Примеры
Пример использования
snowflakeIDToDateTime64
Добавлена в версии: v24.6
Возвращает компонент метки времени Snowflake ID в виде значения типа DateTime64.
Синтаксис
Аргументы
value— Snowflake ID.UInt64epoch— Необязательный аргумент. Эпоха Snowflake ID в миллисекундах, отсчитываемых с 1970-01-01. По умолчанию — 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657.UInt*time_zone— Необязательный аргумент. Часовой пояс. Функция интерпретируетtime_stringв соответствии с часовым поясом.String
Возвращаемое значение
Возвращает компонент временной метки из value в виде DateTime64 с масштабом = 3, то есть с точностью до миллисекунд. DateTime64
Примеры
Пример использования
snowflakeToDateTime
Введена в версии v21.10
Эта функция является устаревшей и может использоваться только в том случае, если включена настройка allow_deprecated_snowflake_conversion_functions.
Функция будет удалена в одной из будущих версий.
Пожалуйста, используйте вместо неё функцию snowflakeIDToDateTime.
Извлекает компонент метки времени Snowflake ID в формате DateTime.
Синтаксис
Аргументы
value— идентификатор Snowflake.Int64time_zone— необязательный параметр. Timezone. Функция интерпретируетtime_stringв соответствии с указанным часовым поясом.String
Возвращаемое значение
Возвращает компонент метки времени из значения value. DateTime
Примеры
Пример использования
snowflakeToDateTime64
Добавлена в версии: v21.10
Эта функция устарела и может использоваться только в том случае, если настройка allow_deprecated_snowflake_conversion_functions включена.
Функция будет удалена в одной из будущих версий.
Используйте вместо неё функцию snowflakeIDToDateTime64.
Извлекает компонент временной метки Snowflake ID в формате DateTime64.
Синтаксис
Аргументы
value— Snowflake ID.Int64time_zone— необязательный параметр. Timezone. Функция интерпретируетtime_stringв указанном часовом поясе.String
Возвращаемое значение
Возвращает компонент отметки времени из value. DateTime64(3)
Примеры
Пример использования
toUUIDOrDefault
Введена в версии: v21.1
Преобразует значение типа String в тип UUID. Если преобразование не удалось, возвращает UUID по умолчанию вместо генерации ошибки.
Функция пытается разобрать строку из 36 символов в стандартном формате UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). Если строку нельзя преобразовать в корректный UUID, функция возвращает указанный UUID по умолчанию.
Синтаксис
Аргументы
string— строка из 36 символов или FixedString(36), преобразуемая в UUID.default— значение UUID, которое будет возвращено, если первый аргумент не удаётся преобразовать к типу UUID.
Возвращаемое значение
Возвращает преобразованный UUID при успешном преобразовании или UUID по умолчанию, если преобразование завершается ошибкой. UUID
Примеры
Успешное преобразование возвращает распарсенный UUID
В случае неудачного преобразования возвращается UUID по умолчанию
toUUIDOrNull
Введена в версии v20.12
Преобразует входное значение в значение типа UUID, но в случае ошибки возвращает NULL.
Аналог функции toUUID, но возвращает NULL вместо генерации исключения при ошибках преобразования.
Поддерживаемые аргументы:
- Строковые представления UUID в стандартном формате (8-4-4-4-12 шестнадцатеричных цифр).
- Строковые представления UUID без дефисов (32 шестнадцатеричные цифры).
Неподдерживаемые аргументы (возвращают NULL):
- Неверные строковые форматы.
- Типы, отличные от строк.
- Некорректные UUID.
Синтаксис
Аргументы
x— строковое представление UUID.String
Возвращаемое значение
Возвращает значение UUID при успешном преобразовании, в противном случае — NULL. UUID или NULL
Примеры
Примеры использования