UUID を操作する関数
UUIDv7 の生成
生成される UUID は、Unix エポックミリ秒の 48 ビットのタイムスタンプに続いて、バージョン「7」(4 ビット)、1 ミリ秒内で UUID を区別するためのカウンタ(バリアントフィールド「2」(2 ビット)を含む 42 ビット)、およびランダムフィールド(32 ビット)で構成されます。
任意のタイムスタンプ(unix_ts_ms)に対して、カウンタはランダムな値から開始し、タイムスタンプが変化するまで、新しい UUID が生成されるたびに 1 ずつ増加します。カウンタがオーバーフローした場合は、タイムスタンプフィールドが 1 増加し、カウンタは新しいランダムな開始値にリセットされます。
UUID 生成関数は、同時に実行されているスレッドおよびクエリにおけるすべての関数呼び出しにわたって、同一タイムスタンプ内のカウンタフィールドが単調に増加することを保証します。
Snowflake ID の生成
生成される Snowflake ID には、現在の Unix タイムスタンプ(ミリ秒単位、41 ビット + 先頭のゼロ 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
UUID のバイナリ表現を受け取り、その形式をオプション引数 variant(既定値は Big-endian)で指定し、テキスト形式の 36 文字からなる文字列を返します。
構文
引数
binary— UUID のバイナリ表現。FixedString(16)variant— RFC4122 で規定されているバリアント。1 =Big-endian(デフォルト)、2 =Microsoft。(U)Int*
戻り値
UUID を文字列表現として返します。String
例
使用例
Microsoft 形式
UUIDStringToNum
導入: v1.1
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx という形式の 36 文字の文字列を受け取り、そのバイナリ表現として 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)) という 2 つの関数呼び出しの組み合わせを置き換えるものであり、UUID からバイト列を取り出す際に中間の文字列変換が不要になります。
構文
引数
uuid— UUID。StringまたはFixedStringvariant— RFC4122 で規定されているバリアント。1 =Big-endian(デフォルト)、2 =Microsoft。(U)Int*
返り値
UUID のバイナリ表現を返します。FixedString(16)
例
使用例
Microsoft バリアント
UUIDv7ToDateTime
導入バージョン: v24.5
UUID バージョン 7 のタイムスタンプ部分を返します。
構文
引数
返り値
ミリ秒精度のタイムスタンプを返します。UUID が有効なバージョン 7 UUID でない場合は、1970-01-01 00:00:00.000 を返します。DateTime64(3)
例
使用例
タイムゾーン付き
dateTime64ToSnowflake
導入バージョン: v21.10
この関数は非推奨で、設定 allow_deprecated_snowflake_conversion_functions が有効になっている場合にのみ使用できます。
この関数は将来のある時点で削除される予定です。
代わりに dateTime64ToSnowflakeID 関数を使用してください。
DateTime64 を、与えられた時刻における最初の Snowflake ID に変換します。
構文
引数
value— 時刻を含む日付。DateTime64
返される値
指定した時刻に対応する最初の Snowflake ID に変換した値を返します。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 に変換した値
例
simple
dateTimeToSnowflake
導入バージョン: v21.10
この関数は非推奨となっており、allow_deprecated_snowflake_conversion_functions 設定が有効な場合にのみ使用できます。
この関数は将来的に削除される予定です。
代わりに dateTimeToSnowflakeID 関数を使用してください。
DateTime の値を、その時刻における最初の Snowflake ID に変換します。
構文
引数
value— 日時。DateTime
戻り値
指定した時刻における最初の Snowflake ID を表す値を返します。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 を生成します。
UUID の構造、カウンター管理、および並行性に関する保証の詳細については、「UUIDv7 generation」セクションを参照してください。
2025年9月時点では、バージョン 7 UUID はドラフト段階であり、そのレイアウトは将来変更される可能性があります。
構文
引数
value— 日時。DateTime
戻り値
UUIDv7 を返します。UUID
例
使用例
同じタイムスタンプに対する複数の UUID
generateSnowflakeID
導入: v24.6
Snowflake ID を生成します。
関数 generateSnowflakeID は、並行実行されるスレッドおよびクエリでのすべての関数呼び出し間で、タイムスタンプに含まれるカウンターフィールドが単調に増加し続けることを保証します。
実装の詳細については、セクション「Snowflake ID generation」を参照してください。
構文
引数
expr— クエリ内で関数が複数回呼び出される場合に、共通部分式除去 を回避するために使用される任意の式。この式の値は、返される Snowflake ID に影響しません。省略可能。machine_id— マシン ID。下位 10 ビットが使用されます。Int64。省略可能。
戻り値
Snowflake ID を返します。UInt64
例
使用例
1 行あたりに複数の Snowflake ID が生成される
式とマシン ID を指定する場合
generateUUIDv4
導入バージョン: v1.1
構文
引数
expr— 省略可。クエリ内で関数が複数回呼び出される場合に、common subexpression elimination を回避するために使用される任意の式。この式の値は、返される UUID には影響しません。
戻り値
UUIDv4 を返します。UUID
例
使用例
共通部分式の除去
generateUUIDv7
導入バージョン: v24.5
UUIDの構造、カウンター管理、および並行性に関する保証の詳細については、「UUIDv7 generation」セクションを参照してください。
2025年9月時点では、バージョン7 UUIDはドラフト状態であり、将来的にレイアウトが変更される可能性があります。
構文
引数
expr— 省略可能。クエリ内でこの関数が複数回呼び出される際に、common subexpression elimination を回避するために使用される任意の式です。式の値は返される UUID には影響しません。Any
戻り値
UUIDv7 を返します。UUID
例
使用例
共通部分式の除去
snowflakeIDToDateTime
導入: v24.6
Snowflake ID のタイムスタンプ部分を、型 DateTime の値として返します。
構文
引数
value— Snowflake ID。UInt64epoch— オプション。Snowflake ID のエポックを、1970-01-01 からのミリ秒で指定します。デフォルトは 0(1970-01-01)。Twitter/X のエポック(2015-01-01)の場合は 1288834974657 を指定します。UInt*time_zone— オプション。Timezone。この関数は、タイムゾーンに従ってtime_stringを解析します。String
返り値
value のタイムスタンプ部分を返します。DateTime
例
使用例
snowflakeIDToDateTime64
導入バージョン: v24.6
Snowflake ID のタイムスタンプ部分を、DateTime64 型の値として返します。
構文
引数
value— Snowflake ID。UInt64epoch— オプション。1970-01-01 からの経過ミリ秒で表した Snowflake ID のエポック。デフォルトは 0(1970-01-01)。Twitter/X のエポック(2015-01-01)の場合は 1288834974657 を指定します。UInt*time_zone— オプション。Timezone。関数は指定されたタイムゾーンに従ってtime_stringを解釈します。String
戻り値
value のタイムスタンプ部分を、スケール = 3(ミリ秒精度)の DateTime64 として返します。DateTime64
例
使用例
snowflakeToDateTime
導入バージョン: v21.10
この関数は非推奨であり、allow_deprecated_snowflake_conversion_functions 設定が有効な場合にのみ使用できます。
この関数は将来のある時点で削除されます。
代わりに snowflakeIDToDateTime 関数を使用してください。
Snowflake ID のタイムスタンプ部分を抽出し、DateTime 形式で返します。
構文
引数
value— Snowflake ID。Int64time_zone— 省略可能。Timezone。この関数は、指定されたタイムゾーンに従ってtime_stringを解析します。String
戻り値
value のタイムスタンプ部分を返します。DateTime
例
使用例
snowflakeToDateTime64
導入バージョン: v21.10
この関数は非推奨であり、設定 allow_deprecated_snowflake_conversion_functions が有効な場合にのみ使用できます。
この関数は将来、いずれかの時点で削除されます。
代わりに snowflakeIDToDateTime64 関数を使用してください。
Snowflake ID のタイムスタンプ部分を DateTime64 形式で抽出します。
構文
引数
戻り値
value のタイムスタンプ部分を返します。DateTime64(3)
例
使用例
toUUIDOrDefault
導入バージョン: v21.1
String 型の値を UUID 型に変換します。変換に失敗した場合は、エラーをスローせずに指定されたデフォルトの UUID 値を返します。
この関数は、標準的な UUID 形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)の 36 文字の文字列のパースを試みます。 文字列を有効な UUID に変換できない場合、関数は指定されたデフォルトの UUID 値を返します。
構文
引数
string— UUID に変換する 36 文字の文字列、または FixedString(36)。 -default— 最初の引数を UUID 型に変換できない場合に返される UUID 値。
戻り値
変換に成功した場合は変換後の UUID を返し、変換に失敗した場合はデフォルトの UUID を返します。 UUID
例
変換に成功するとパースされた UUID を返します
変換に失敗した場合、デフォルトの UUID を返す
toUUIDOrNull
導入バージョン: v20.12
入力値を UUID 型に変換しますが、エラーが発生した場合は NULL を返します。
変換エラー時に例外をスローする代わりに NULL を返す点を除き、toUUID と同様です。
サポートされる引数:
- UUID の文字列表現(標準形式: 8-4-4-4-12 個の 16 進数字)。
- ハイフンなしの UUID の文字列表現(32 個の 16 進数字)。
サポートされない引数(NULL を返す):
- 無効な文字列形式。
- 文字列以外の型。
- 不正な UUID。
構文
引数
x— UUID の文字列表現。String
返される値
成功した場合は UUID 値を返し、失敗した場合は NULL を返します。UUID または NULL
例
使用例