メインコンテンツへスキップ

UUIDsを扱う関数

UUIDv7 の生成

生成される UUID には、Unix ミリ秒の 48 ビットのタイムスタンプが含まれ、その後にバージョン “7” (4 ビット) 、同一ミリ秒内で UUID を区別するためのカウンター (42 ビット。バリアントフィールド “2” の 2 ビットを含む) 、およびランダムフィールド (32 ビット) が続きます。 任意のタイムスタンプ (unix_ts_ms) について、カウンターはランダムな値から開始され、タイムスタンプが変わるまで、新しい UUID が生成されるたびに 1 ずつ増加します。カウンターがオーバーフローした場合は、タイムスタンプフィールドが 1 増加し、カウンターは新しいランダムな開始値にリセットされます。 UUID 生成関数は、あるタイムスタンプ内のカウンターフィールドが、同時実行中のすべてのスレッドおよびクエリにわたる関数呼び出し全体で単調増加することを保証します。

Snowflake ID の生成

生成される Snowflake ID には、現在の Unixタイムスタンプ (ミリ秒単位、41 ビット + 最上位の 0 ビット 1 つ) 、続いてマシン ID (10 ビット) 、さらに同一ミリ秒内の ID を区別するためのカウンター (12 ビット) が含まれます。任意のタイムスタンプ (unix_ts_ms) に対して、カウンターは 0 から始まり、タイムスタンプが変わるまで新しい Snowflake ID が生成されるたびに 1 ずつ増加します。カウンターがオーバーフローした場合は、タイムスタンプのフィールドが 1 増やされ、カウンターは 0 にリセットされます。
生成される Snowflake ID は、UNIX エポック である 1970-01-01 を基準としています。Snowflake ID の エポック には標準や推奨事項はありませんが、他のシステムの実装では別の エポック が使われている場合があります。たとえば、Twitter/X (2010-11-04) や Mastodon (2015-01-01) です。

UUIDNumToString

導入バージョン: v1.1.0 UUID のバイナリ表現を受け取り、variant でそのフォーマットを任意に指定できます (デフォルトは Big-endian) 。テキスト形式の 36 文字の文字列を返します。 構文
引数
  • binary — UUID のバイナリ表現。FixedString(16)
  • variantRFC4122 で規定されたバリアント。1 = Big-endian (デフォルト) 、2 = Microsoft(U)Int*
戻り値 UUID を文字列として返します。String 使用例
Query
Response
Microsoft バリアント
Query
Response

UUIDStringToNum

導入バージョン: v1.1.0 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式の36文字の文字列を受け取り、そのバイナリ表現として FixedString(16) を返します。必要に応じて variant でフォーマットを指定でき、デフォルトは Big-endian です。 構文
引数
  • string — 36 文字の文字列、または固定長文字列。String または FixedString(36)
  • variantRFC4122 で規定される バリアント。1 = Big-endian (デフォルト) 、2 = Microsoft(U)Int*
戻り値 string のバイナリ表現を返します。FixedString(16) 使用例
Query
Response
Microsoft バリアント
Query
Response

UUIDToNum

導入バージョン: v24.5.0 UUID を受け取り、そのバイナリ表現を FixedString(16) として返します。フォーマットは variant で指定でき、デフォルトは Big-endian です。 この関数は、2 つの個別の関数 UUIDStringToNum(toString(uuid)) の呼び出しを置き換えるもので、UUID からバイトを抽出するために UUID を文字列へ中間変換する必要がありません。 構文
引数
  • uuid — UUID。String または FixedString
  • variantRFC4122 で規定されているバリアント。1 = Big-endian (デフォルト) 、2 = Microsoft(U)Int*
戻り値 UUID のバイナリ表現を返します。FixedString(16) 使用例
Query
Response
Microsoft バリアント
Query
Response

UUIDv7ToDateTime

導入バージョン: v24.5.0 UUIDバージョン7のタイムスタンプ部分を返します。 構文
引数 戻り値 ミリ秒精度のタイムスタンプを返します。UUIDが有効なバージョン7 UUIDでない場合は、1970-01-01 00:00:00.000を返します。DateTime64(3) 使用例
Query
Response
タイムゾーン付き
Query
Response

dateTime64ToSnowflake

導入バージョン: v21.10.0
この関数は非推奨であり、設定 allow_deprecated_snowflake_conversion_functions が有効な場合にのみ使用できます。 この関数は将来のいずれかの時点で削除される予定です。代わりに関数 dateTime64ToSnowflakeID を使用してください。
DateTime64 を、指定した時刻に対応する最初の Snowflake ID に変換します。 構文
引数 戻り値 指定した時点における最初の Snowflake ID に変換された入力値を返します。Int64 使用例
Query
Response

dateTime64ToSnowflakeID

導入バージョン: v24.6.0 DateTime64 の値を、指定した時刻に対応する最初の Snowflake ID に変換します。 構文
引数
  • value — 日時。DateTime64
  • epoch — 1970-01-01 からの経過ミリ秒で表した Snowflake ID のエポック。デフォルトは 0 (1970-01-01) です。Twitter/X のエポック (2015-01-01) を使用する場合は、1288834974657 を指定します。UInt*
戻り値 UInt64 に変換された入力値 simple
Query
Response

dateTimeToSnowflake

導入バージョン: v21.10.0
この関数は非推奨であり、設定 allow_deprecated_snowflake_conversion_functions が有効な場合にのみ使用できます。 この関数は今後削除される予定です。代わりに関数 dateTimeToSnowflakeID を使用してください。
DateTime の値を、指定した時刻における最初の Snowflake ID に変換します。 構文
引数 戻り値 入力された日時における最初の Snowflake ID を返します。Int64 使用例
Query
Response

dateTimeToSnowflakeID

導入バージョン: v24.6.0 DateTime の値を、指定した時刻における最初の Snowflake ID に変換します。 構文
引数
  • value — 日時。DateTime
  • epoch — 1970-01-01 からの経過ミリ秒で表した Snowflake ID の epoch。デフォルトは 0 (1970-01-01) です。Twitter/X の epoch (2015-01-01) の場合は、1288834974657 を指定します。UInt*
戻り値 UInt64 に変換された入力値 simple
Query
Response

dateTimeToUUIDv7

導入バージョン: v25.8.0 指定した時刻の DateTime 値を UUIDv7 に変換します。 UUID の構造、カウンターの管理方法、および同時実行時の保証の詳細については、“UUIDv7 の生成” セクションを参照してください。
2025年9月時点では、バージョン 7 UUID はドラフト段階にあり、今後レイアウトが変更される可能性があります。
構文
引数 戻り値 UUIDv7を返します。UUID 使用例
Query
Response
同じタイムスタンプに対して複数のUUID
Query
Response

generateSnowflakeID

導入バージョン: v24.6.0 Snowflake ID を生成します。 関数 generateSnowflakeID は、同時実行中のスレッドおよびクエリ全体にわたるすべての関数呼び出しにおいて、タイムスタンプ内のカウンター フィールドが単調増加することを保証します。 実装の詳細については、“Snowflake ID generation” セクションを参照してください。 構文
引数
  • expr — 関数が1つのクエリ内で複数回呼び出される場合に、共通部分式除去を回避するための任意のです。この式の値は、返される Snowflake ID には影響しません。省略可能です。 - machine_id — マシン ID。下位 10 ビットが使用されます。Int64。省略可能です。
戻り値 Snowflake ID を返します。UInt64 使用例
Query
Response
各行につき複数の Snowflake ID が生成される
Query
Response
式とマシン ID を使用する場合
Query
Response

generateUUIDv4

導入バージョン: v1.1.0 バージョン 4UUID を生成します。 構文
引数
  • expr — 省略可。関数が1つのクエリ内で複数回呼び出される場合に、共通部分式除去を回避するために使われる任意の式です。式の値は、返される UUID には影響しません。
戻り値 UUIDv4 を返します。UUID 使用例
Query
Response
共通部分式除去
Query
Response

generateUUIDv7

導入バージョン: v24.5.0 バージョン 7 UUID を生成します。 UUID の構造、カウンター管理、および同時実行性の保証の詳細については、“UUIDv7 の生成” セクションを参照してください。
2025 年 9 月時点では、バージョン 7 UUID はドラフト段階にあり、今後レイアウトが変更される可能性があります。
構文
引数
  • expr — オプション。関数が1つのクエリ内で複数回呼び出される場合に、共通部分式除去を回避するために使用する任意の式です。この式の値は、返される UUID に影響しません。Any
戻り値 UUIDv7 を返します。UUID 使用例
Query
Response
共通部分式除去
Query
Response

snowflakeIDToDateTime

導入バージョン: v24.6.0 Snowflake ID のタイムスタンプ部分を、DateTime 型の値として返します。 構文
引数
  • value — Snowflake ID。UInt64
  • epoch — 省略可能。1970-01-01 からのミリ秒単位で表した Snowflake ID のエポックです。デフォルトは 0 (1970-01-01) です。Twitter/X のエポック (2015-01-01) の場合は、1288834974657 を指定します。UInt*
  • time_zone — 省略可能。タイムゾーン。関数は time_string をこのタイムゾーンに従って解析します。String
戻り値 value のタイムスタンプ部分を返します。DateTime 使用例
Query
Response

snowflakeIDToDateTime64

導入バージョン: v24.6.0 Snowflake ID のタイムスタンプ部分を、DateTime64 型の値として返します。 構文
引数
  • value — Snowflake ID。UInt64
  • epoch — 省略可能。1970-01-01 からの経過ミリ秒で表される Snowflake ID のエポック。デフォルトは 0 (1970-01-01) です。Twitter/X のエポック (2015-01-01) の場合は、1288834974657 を指定します。UInt*
  • time_zone — 省略可能。タイムゾーン。この関数は、タイムゾーンに従って time_string を解析します。String
戻り値 value のタイムスタンプ部分を、scale = 3、つまりミリ秒精度の DateTime64 として返します。DateTime64 使用例
Query
Response

snowflakeToDateTime

導入バージョン: v21.10.0
この関数は非推奨であり、設定 allow_deprecated_snowflake_conversion_functions が有効な場合にのみ使用できます。 この関数は今後削除される予定です。代わりに snowflakeIDToDateTime 関数を使用してください。
Snowflake ID のタイムスタンプ部分を DateTime フォーマットで抽出します。 構文
引数
  • value — Snowflake ID。Int64
  • time_zone — 任意。タイムゾーン。この関数は、time_string をタイムゾーンに従って解析します。String
戻り値 value のタイムスタンプ部分を返します。DateTime 使用例
Query
Response

snowflakeToDateTime64

導入バージョン: v21.10.0
この関数は非推奨であり、設定 allow_deprecated_snowflake_conversion_functions が有効になっている場合にのみ使用できます。 この関数は将来的に削除される予定です。代わりに snowflakeIDToDateTime64 関数を使用してください。
Snowflake ID の タイムスタンプ部分 を DateTime64 形式で抽出します。 構文
引数
  • value — Snowflake ID。Int64
  • time_zone — 任意。タイムゾーン。この関数は、タイムゾーンに従って time_string を解析します。String
戻り値 value のタイムスタンプ部分を返します。DateTime64(3) 使用例
Query
Response

toUUIDOrDefault

導入バージョン: v21.1.0 String 型の値を UUID 型に変換します。変換に失敗した場合は、error を throw する代わりに、デフォルトの UUID 値を返します。 この関数は、標準的な UUID フォーマット (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) の 36 文字の文字列を解析します。 文字列を有効な UUID に変換できない場合、この関数は指定されたデフォルトの UUID 値を返します。 構文
引数
  • string — UUID に変換する 36 文字の文字列、または FixedString(36)。 - default — 最初の引数を UUID 型に変換できない場合に返される UUID 値。
戻り値 変換に成功した場合は変換後の UUID を返し、変換に失敗した場合はデフォルトの UUID を返します。 UUID 変換に成功した場合は、パースされた UUID が返されます
Query
Response
変換に失敗した場合、デフォルトのUUIDを返します
Query
Response

toUUIDOrNull

導入バージョン: v20.12.0 入力値を UUID 型の値に変換します。エラーが発生した場合は NULL を返します。 toUUID と同様ですが、変換エラー時に例外をスローする代わりに NULL を返します。 サポートされる引数:
  • 標準形式 (8-4-4-4-12 桁の16進数) の UUID の文字列表現。
  • ハイフンなし (32 桁の16進数) の UUID の文字列表現。
サポートされない引数 (NULL を返します) :
  • 無効な文字列形式。
  • 文字列以外の型。
  • 形式が不正な UUID。
構文
引数
  • x — UUIDの文字列表現。String
戻り値 成功した場合はUUID値を返し、失敗した場合は NULL を返します。UUID または NULL 使用例
Query
Response
最終更新日 2026年7月2日