Перейти к основному содержимому
Перейти к основному содержимому

Функции работы с UUID

generateUUIDv4

Генерирует UUID версии 4.

Синтаксис

generateUUIDv4([expr])

Аргументы

  • expr — Произвольное выражение, используемое для обхода удаления общих подвыражений, если функция вызывается несколько раз в запросе. Значение выражения не влияет на возвращаемый UUID. Необязательный.

Возвращаемое значение

Значение типа UUIDv4.

Пример

Сначала создайте таблицу с колонкой типа UUID, затем вставьте сгенерированный UUIDv4 в таблицу.

CREATE TABLE tab (uuid UUID) ENGINE = Memory;

INSERT INTO tab SELECT generateUUIDv4();

SELECT * FROM tab;

Результат:

┌─────────────────────────────────uuid─┐
│ f4bf890f-f9dc-4332-ad5c-0c18e73f28e9 │
└──────────────────────────────────────┘

Пример с несколькими сгенерированными UUID для строки

SELECT generateUUIDv4(1), generateUUIDv4(2);

┌─generateUUIDv4(1)────────────────────┬─generateUUIDv4(2)────────────────────┐
│ 2d49dc6e-ddce-4cd0-afb8-790956df54c1 │ 8abf8c13-7dea-4fdf-af3e-0e18767770e6 │
└──────────────────────────────────────┴──────────────────────────────────────┘

generateUUIDv7

Генерирует UUID версии 7.

Сгенерированный UUID содержит текущую метку времени Unix в миллисекундах (48 бит), за которым следуют версия "7" (4 бита), счетчик (42 бита), чтобы различать UUID в пределах одной миллисекунды (включая поле варианта "2", 2 бита), и случайное поле (32 бита). Для любой заданной метки времени (unix_ts_ms) счетчик начинается с произвольного значения и увеличивается на 1 для каждого нового UUID, пока метка времени не изменится. В случае переполнения счетчика поле метки времени увеличивается на 1, и счетчик сбрасывается на новое случайное стартовое значение.

Функция generateUUIDv7 гарантирует, что поле счетчика в пределах метки времени облегчено монотонно во всех вызовах функции в параллельно работающих потоках и запросах.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|                           unix_ts_ms                          |
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|          unix_ts_ms           |  ver  |   counter_high_bits   |
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|var|                   counter_low_bits                        |
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|                            rand_b                             |
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
примечание

По состоянию на апрель 2024 года UUID версии 7 находятся в статусе черновика, и их структура может измениться в будущем.

Синтаксис

generateUUIDv7([expr])

Аргументы

  • expr — Произвольное выражение, используемое для обхода удаления общих подвыражений, если функция вызывается несколько раз в запросе. Значение выражения не влияет на возвращаемый UUID. Необязательный.

Возвращаемое значение

Значение типа UUIDv7.

Пример

Сначала создайте таблицу с колонкой типа UUID, затем вставьте сгенерированный UUIDv7 в таблицу.

CREATE TABLE tab (uuid UUID) ENGINE = Memory;

INSERT INTO tab SELECT generateUUIDv7();

SELECT * FROM tab;

Результат:

┌─────────────────────────────────uuid─┐
│ 018f05af-f4a8-778f-beee-1bedbc95c93b │
└──────────────────────────────────────┘

Пример с несколькими сгенерированными UUID для строки

SELECT generateUUIDv7(1), generateUUIDv7(2);

┌─generateUUIDv7(1)────────────────────┬─generateUUIDv7(2)────────────────────┐
│ 018f05c9-4ab8-7b86-b64e-c9f03fbd45d1 │ 018f05c9-4ab8-7b86-b64e-c9f12efb7e16 │
└──────────────────────────────────────┴──────────────────────────────────────┘

empty

Проверяет, является ли входной UUID пустым.

Синтаксис

empty(UUID)

UUID считается пустым, если он содержит все нули (нулевой UUID).

Функция также работает для Массивов и Строк.

Аргументы

Возвращаемое значение

  • Возвращает 1 для пустого UUID или 0 для непустого UUID. UInt8.

Пример

Чтобы сгенерировать значение UUID, ClickHouse предоставляет функцию generateUUIDv4.

Запрос:

SELECT empty(generateUUIDv4());

Результат:

┌─empty(generateUUIDv4())─┐
│                       0 │
└─────────────────────────┘

notEmpty

Проверяет, является ли входной UUID непустым.

Синтаксис

notEmpty(UUID)

UUID считается пустым, если он содержит все нули (нулевой UUID).

Функция также работает для Массивов или Строк.

Аргументы

Возвращаемое значение

  • Возвращает 1 для непустого UUID или 0 для пустого UUID. UInt8.

Пример

Чтобы сгенерировать значение UUID, ClickHouse предоставляет функцию generateUUIDv4.

Запрос:

SELECT notEmpty(generateUUIDv4());

Результат:

┌─notEmpty(generateUUIDv4())─┐
│                          1 │
└────────────────────────────┘

toUUID

Преобразует значение типа String в UUID.

toUUID(string)

Возвращаемое значение

Значение типа UUID.

Пример использования

SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid

Результат:

┌─────────────────────────────────uuid─┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘

toUUIDOrDefault

Аргументы

  • string — Строка из 36 символов или FixedString(36). String.
  • default — UUID, который будет использоваться в качестве значения по умолчанию, если первый аргумент не может быть преобразован в тип UUID. UUID.

Возвращаемое значение

UUID

toUUIDOrDefault(string, default)

Возвращаемое значение

Значение типа UUID.

Примеры использования

Этот первый пример возвращает первый аргумент, преобразованный в тип UUID, так как его можно преобразовать:

SELECT toUUIDOrDefault('61f0c404-5cb3-11e7-907b-a6006ad3dba0', cast('59f0c404-5cb3-11e7-907b-a6006ad3dba0' as UUID));

Результат:

┌─toUUIDOrDefault('61f0c404-5cb3-11e7-907b-a6006ad3dba0', CAST('59f0c404-5cb3-11e7-907b-a6006ad3dba0', 'UUID'))─┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0                                                                          │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Этот второй пример возвращает второй аргумент (предоставленный UUID по умолчанию), так как первый аргумент не может быть преобразован в тип UUID:

SELECT toUUIDOrDefault('-----61f0c404-5cb3-11e7-907b-a6006ad3dba0', cast('59f0c404-5cb3-11e7-907b-a6006ad3dba0' as UUID));

Результат:

┌─toUUIDOrDefault('-----61f0c404-5cb3-11e7-907b-a6006ad3dba0', CAST('59f0c404-5cb3-11e7-907b-a6006ad3dba0', 'UUID'))─┐
│ 59f0c404-5cb3-11e7-907b-a6006ad3dba0                                                                               │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

toUUIDOrNull

Принимает аргумент типа String и пытается разобрать его в UUID. Если не удается, возвращает NULL.

toUUIDOrNull(string)

Возвращаемое значение

Значение Nullable(UUID).

Пример использования

SELECT toUUIDOrNull('61f0c404-5cb3-11e7-907b-a6006ad3dba0T') AS uuid

Результат:

┌─uuid─┐
│ ᴺᵁᴸᴸ │
└──────┘

toUUIDOrZero

Принимает аргумент типа String и пытается разобрать его в UUID. Если не удается, возвращает нулевой UUID.

toUUIDOrZero(string)

Возвращаемое значение

Значение типа UUID.

Пример использования

SELECT toUUIDOrZero('61f0c404-5cb3-11e7-907b-a6006ad3dba0T') AS uuid

Результат:

┌─────────────────────────────────uuid─┐
│ 00000000-0000-0000-0000-000000000000 │
└──────────────────────────────────────┘

UUIDStringToNum

Принимает string, содержащую 36 символов в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, и возвращает FixedString(16) в качестве его двоичного представления; формат может быть указан с помощью variant (по умолчанию Big-endian).

Синтаксис

UUIDStringToNum(string[, variant = 1])

Аргументы

  • stringString из 36 символов или FixedString
  • variant — целое число, представляющее вариант, как указано в RFC4122. 1 = Big-endian (по умолчанию), 2 = Microsoft.

Возвращаемое значение

FixedString(16)

Примеры использования

SELECT
    '612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
    UUIDStringToNum(uuid) AS bytes

Результат:

┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ a/<@];!~p{jTj={) │
└──────────────────────────────────────┴──────────────────┘
SELECT
    '612f3c40-5d3b-217e-707b-6a546a3d7b29' AS uuid,
    UUIDStringToNum(uuid, 2) AS bytes

Результат:

┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ @</a;]~!p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

UUIDNumToString

Принимает binary, содержащий двоичное представление UUID, с его форматом, который можно задать с помощью variant (по умолчанию Big-endian), и возвращает строку, содержащую 36 символов в текстовом формате.

Синтаксис

UUIDNumToString(binary[, variant = 1])

Аргументы

  • binaryFixedString(16) в качестве двоичного представления UUID.
  • variant — целое число, представляющее вариант, как указано в RFC4122. 1 = Big-endian (по умолчанию), 2 = Microsoft.

Возвращаемое значение

Строка.

Пример использования

SELECT
    'a/<@];!~p{jTj={)' AS bytes,
    UUIDNumToString(toFixedString(bytes, 16)) AS uuid

Результат:

┌─bytes────────────┬─uuid─────────────────────────────────┐
│ a/<@];!~p{jTj={) │ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │
└──────────────────┴──────────────────────────────────────┘
SELECT
    '@</a;]~!p{jTj={)' AS bytes,
    UUIDNumToString(toFixedString(bytes, 16), 2) AS uuid

Результат:

┌─bytes────────────┬─uuid─────────────────────────────────┐
│ @</a;]~!p{jTj={) │ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │
└──────────────────┴──────────────────────────────────────┘

UUIDToNum

Принимает UUID и возвращает его двоичное представление как FixedString(16), с форматом, который можно указать с помощью variant (по умолчанию Big-endian). Эта функция заменяет вызовы двух отдельных функций UUIDStringToNum(toString(uuid)), поэтому промежуточное преобразование из UUID в строку не требуется для извлечения байтов из UUID.

Синтаксис

UUIDToNum(uuid[, variant = 1])

Аргументы

  • uuidUUID.
  • variant — целое число, представляющее вариант, как указано в RFC4122. 1 = Big-endian (по умолчанию), 2 = Microsoft.

Возвращаемое значение

Двоичное представление UUID.

Примеры использования

SELECT
    toUUID('612f3c40-5d3b-217e-707b-6a546a3d7b29') AS uuid,
    UUIDToNum(uuid) AS bytes

Результат:

┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ a/<@];!~p{jTj={) │
└──────────────────────────────────────┴──────────────────┘
SELECT
    toUUID('612f3c40-5d3b-217e-707b-6a546a3d7b29') AS uuid,
    UUIDToNum(uuid, 2) AS bytes

Результат:

┌─uuid─────────────────────────────────┬─bytes────────────┐
│ 612f3c40-5d3b-217e-707b-6a546a3d7b29 │ @</a;]~!p{jTj={) │
└──────────────────────────────────────┴──────────────────┘

UUIDv7ToDateTime

Возвращает компонент временной метки UUID версии 7.

Синтаксис

UUIDv7ToDateTime(uuid[, timezone])

Аргументы

Возвращаемое значение

  • Временная метка с точностью до миллисекунды. Если UUID не является действительным UUID версии 7, возвращается 1970-01-01 00:00:00.000. DateTime64(3).

Примеры использования

SELECT UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'))

Результат:

┌─UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'))─┐
│                                          2024-04-22 15:30:29.048 │
└──────────────────────────────────────────────────────────────────┘
SELECT UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'), 'America/New_York')

Результат:

┌─UUIDv7ToDateTime(toUUID('018f05c9-4ab8-7b86-b64e-c9f03fbd45d1'), 'America/New_York')─┐
│                                                              2024-04-22 08:30:29.048 │
└──────────────────────────────────────────────────────────────────────────────────────┘

serverUUID

Возвращает случайный UUID, сгенерированный во время первого запуска сервера ClickHouse. UUID хранится в файле uuid в каталоге сервера ClickHouse (например, /var/lib/clickhouse/) и сохраняется между перезагрузками сервера.

Синтаксис

serverUUID()

Возвращаемое значение

  • UUID сервера. UUID.

generateSnowflakeID

Генерирует Snowflake ID.

Сгенерированный Snowflake ID содержит текущую метку времени Unix в миллисекундах (41 + 1 старший нулевой бит), за которой следуют идентификатор машины (10 бит) и счетчик (12 бит), чтобы различать ID в пределах одной миллисекунды. Для любой заданной метки времени (unix_ts_ms) счетчик начинается с 0 и увеличивается на 1 для каждого нового Snowflake ID, пока метка времени не изменится. В случае переполнения счетчика поле метки времени увеличивается на 1, и счетчик сбрасывается на 0.

Функция generateSnowflakeID гарантирует, что поле счетчика в пределах метки времени увеличивается монотонно во всех вызовах функции в параллельно работающих потоках и запросах.

примечание

Сгенерированные Snowflake ID основаны на эпохе UNIX 1970-01-01. Поскольку не существует стандарта или рекомендации для эпохи Snowflake ID, реализации в других системах могут использовать другую эпоху, например, Twitter/X (2010-11-04) или Mastodon (2015-01-01).

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|0|                         timestamp                           |
├─┼                 ┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
|                   |     machine_id    |    machine_seq_num    |
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

Синтаксис

generateSnowflakeID([expr, [machine_id]])

Аргументы

  • expr — Произвольное выражение, используемое для обхода удаления общих подвыражений, если функция вызывается несколько раз в запросе. Значение выражения не влияет на возвращаемый Snowflake ID. Необязательный.
  • machine_id — Идентификатор машины, используются младшие 10 бит. Int64. Необязательный.

Возвращаемое значение

Значение типа UInt64.

Пример

Сначала создайте таблицу с колонкой типа UInt64, затем вставьте сгенерированный Snowflake ID в таблицу.

CREATE TABLE tab (id UInt64) ENGINE = Memory;

INSERT INTO tab SELECT generateSnowflakeID();

SELECT * FROM tab;

Результат:

┌──────────────────id─┐
│ 7199081390080409600 │
└─────────────────────┘

Пример с несколькими сгенерированными Snowflake ID для строки

SELECT generateSnowflakeID(1), generateSnowflakeID(2);

┌─generateSnowflakeID(1)─┬─generateSnowflakeID(2)─┐
│    7199081609652224000 │    7199081609652224001 │
└────────────────────────┴────────────────────────┘

Пример с выражением и идентификатором машины

SELECT generateSnowflakeID('expr', 1);

┌─generateSnowflakeID('expr', 1)─┐
│            7201148511606784002 │
└────────────────────────────────┘

snowflakeToDateTime

Deprecated feature
предупреждение

Эта функция устарела и может использоваться только в том случае, если параметр allow_deprecated_snowflake_conversion_functions включен. Эта функция будет удалена в будущем.

Извлекает компонент временной метки Snowflake ID в формате DateTime.

Синтаксис

snowflakeToDateTime(value[, time_zone])

Аргументы

  • value — Snowflake ID. Int64.
  • time_zoneЧасовой пояс. Функция разбирает time_string в соответствии с часовым поясом. Необязательный. String.

Возвращаемое значение

  • Компонент временной метки value как значение типа DateTime.

Пример

Запрос:

SELECT snowflakeToDateTime(CAST('1426860702823350272', 'Int64'), 'UTC');

Результат:


┌─snowflakeToDateTime(CAST('1426860702823350272', 'Int64'), 'UTC')─┐
│                                              2021-08-15 10:57:56 │
└──────────────────────────────────────────────────────────────────┘

snowflakeToDateTime64

Deprecated feature
предупреждение

Эта функция устарела и может использоваться только в том случае, если параметр allow_deprecated_snowflake_conversion_functions включен. Эта функция будет удалена в будущем.

Извлекает компонент временной метки Snowflake ID в формате DateTime64.

Синтаксис

snowflakeToDateTime64(value[, time_zone])

Аргументы

  • value — Snowflake ID. Int64.
  • time_zoneЧасовой пояс. Функция разбирает time_string в соответствии с часовым поясом. Необязательный. String.

Возвращаемое значение

  • Компонент временной метки value как DateTime64 со шкалой = 3, т.е. с точностью до миллисекунды.

Пример

Запрос:

SELECT snowflakeToDateTime64(CAST('1426860802823350272', 'Int64'), 'UTC');

Результат:


┌─snowflakeToDateTime64(CAST('1426860802823350272', 'Int64'), 'UTC')─┐
│                                            2021-08-15 10:58:19.841 │
└────────────────────────────────────────────────────────────────────┘

dateTimeToSnowflake

Deprecated feature
предупреждение

Эта функция устарела и может использоваться только в том случае, если параметр allow_deprecated_snowflake_conversion_functions включен. Эта функция будет удалена в будущем.

Преобразует значение DateTime в первый Snowflake ID в заданное время.

Синтаксис

dateTimeToSnowflake(value)

Аргументы

  • value — Дата и время. DateTime.

Возвращаемое значение

  • Входное значение преобразуется в тип Int64 как первый Snowflake ID в это время.

Пример

Запрос:

WITH toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai') AS dt SELECT dateTimeToSnowflake(dt);

Результат:

┌─dateTimeToSnowflake(dt)─┐
│     1426860702823350272 │
└─────────────────────────┘

dateTime64ToSnowflake

Deprecated feature
предупреждение

Эта функция устарела и может использоваться только в том случае, если параметр allow_deprecated_snowflake_conversion_functions включен. Эта функция будет удалена в будущем.

Преобразует DateTime64 в первый Snowflake ID в заданное время.

Синтаксис

dateTime64ToSnowflake(value)

Аргументы

Возвращаемое значение

  • Входное значение преобразуется в тип Int64 как первый Snowflake ID в это время.

Пример

Запрос:

WITH toDateTime64('2021-08-15 18:57:56.492', 3, 'Asia/Shanghai') AS dt64 SELECT dateTime64ToSnowflake(dt64);

Результат:

┌─dateTime64ToSnowflake(dt64)─┐
│         1426860704886947840 │
└─────────────────────────────┘

snowflakeIDToDateTime

Возвращает компонент временной метки Snowflake ID в виде значения типа DateTime.

Синтаксис

snowflakeIDToDateTime(value[, epoch[, time_zone]])

Аргументы

  • value — Snowflake ID. UInt64.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательный. UInt*.
  • time_zoneЧасовой пояс. Функция разбирает time_string в соответствии с часовым поясом. Необязательный. String.

Возвращаемое значение

  • Компонент временной метки value как значение типа DateTime.

Пример

Запрос:

SELECT snowflakeIDToDateTime(7204436857747984384) AS res

Результат:

┌─────────────────res─┐
│ 2024-06-06 10:59:58 │
└─────────────────────┘

snowflakeIDToDateTime64

Возвращает компонент временной метки Snowflake ID в виде значения типа DateTime64.

Синтаксис

snowflakeIDToDateTime64(value[, epoch[, time_zone]])

Аргументы

  • value — Snowflake ID. UInt64.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательный. UInt*.
  • time_zoneЧасовой пояс. Функция разбирает time_string в соответствии с часовым поясом. Необязательный. String.

Возвращаемое значение

  • Компонент временной метки value как значение типа DateTime64 со шкалой = 3, т.е. с точностью до миллисекунды.

Пример

Запрос:

SELECT snowflakeIDToDateTime64(7204436857747984384) AS res

Результат:

┌─────────────────res─┐
│ 2024-06-06 10:59:58 │
└─────────────────────┘

dateTimeToSnowflakeID

Преобразует значение DateTime в первый Snowflake ID в заданное время.

Синтаксис

dateTimeToSnowflakeID(value[, epoch])

Аргументы

  • value — Дата и время. DateTime.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательный. UInt*.

Возвращаемое значение

  • Входное значение преобразуется в UInt64 как первый Snowflake ID в это время.

Пример

Запрос:

SELECT toDateTime('2021-08-15 18:57:56', 'Asia/Shanghai') AS dt, dateTimeToSnowflakeID(dt) AS res;

Результат:

┌──────────────────dt─┬─────────────────res─┐
│ 2021-08-15 18:57:56 │ 6832626392367104000 │
└─────────────────────┴─────────────────────┘

dateTime64ToSnowflakeID

Преобразует DateTime64 в первый Snowflake ID в заданное время.

Синтаксис

dateTime64ToSnowflakeID(value[, epoch])

Аргументы

  • value — Дата и время. DateTime64.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательный. UInt*.

Возвращаемое значение

  • Входное значение преобразуется в UInt64 как первый Snowflake ID в это время.

Пример

Запрос:

SELECT toDateTime('2021-08-15 18:57:56.493', 3, 'Asia/Shanghai') AS dt, dateTime64ToSnowflakeID(dt) AS res;

Результат:

┌──────────────────────dt─┬─────────────────res─┐
│ 2021-08-15 18:57:56.493 │ 6832626394434895872 │
└─────────────────────────┴─────────────────────┘

See also