UUIDカラムとtimeuuidカラム
ネイティブ関数をUUIDカラムとtimeuuidカラムに使用して、一意識別子の値を書き込みます。
uuid()
関数はパラメーターが不要で、INSERT
またはSET
文での使用に適したランダムなタイプ4のUUIDを生成します。
いくつかのtimeuuid()
関数は、timeuuid()
型と併用するために設計されています。
dateOf()
SELECT
句で使用するこの関数は、結果セットに含まれているtimeuuid
カラムのタイムスタンプを抽出します。この関数は抽出されたタイムスタンプを日付として返します。生のタイムスタンプを取得するには、unixTimestampOf()
を使用します。now()
コーディネーター・ノードでは、文が実行されたときに、新しい一意の
timeuuid
をミリ秒単位で生成します。timeuuid
のタイムスタンプの部分は、UTC(協定世界時)標準に一致します。この方法は値の挿入に役立ちます。now()
で返される値は一意であることが保証されます。minTimeuuid()
およびmaxTimeuuid()
条件用の時間の構成要素を引数として受け取ってUUID
相当の結果を返します。例:SELECT * FROM myTable WHERE t > maxTimeuuid('2013-01-01 00:05+0000') AND t < minTimeuuid('2013-02-02 10:00+0000')
前述のminTimeuuid/maxTimeuuidの例では、
timeuuid
カラムのt
が厳密に2013-01-01 00:05+0000以降で、かつ、2013-02-02 10:00+0000以前である行をすべて選択します。t >= maxTimeuuid('2013-01-01 00:05+0000')では、2013-01-01 00:05+0000ちょうどに生成されたtimeuuid
は選択されず、基本的にt > maxTimeuuid('2013-01-01 00:05+0000')と等しくなります。minTimeuuid
およびmaxTimeuuid
関数で返される値は、RFC 4122に規定されている時間ベースのUUID
生成プロセスに従っていないため、真正のUUID
ではありません。これらの関数の結果は、now()
関数とは異なり決定論的です。unixTimestampOf()
SELECT
句で使用するこの関数は、結果セットに含まれているtimeuuid
カラムのミリ秒単位のタイムスタンプを抽出します。値を、生の64ビット整数タイムスタンプとして返します。
timeuuid
関数とタイムスタンプ関数をサポートしています。これらの関数は、INSERT
、UPDATE
、およびSELECT
文で使用できます。toDate(timeuuid)
timeuuid
をYYYY-MM-DD 形式のdate
に変換します。toTimestamp(timeuuid)
timeuuid
をタイムスタンプ
形式に変換します。toUnixTimestamp(timeuuid)
timeuuid
をUNIXタイムスタンプ
形式に変換します。toDate(timestamp)
timestamp
をYYYY-MM-DD 形式のdate
に変換します。toUnixTimestamp(timestamp)
timestampをUNIXタイムスタンプ形式に変換します。
toTimestamp(date)
date
をタイムスタンプ
形式に変換します。toUnixTimestamp(date)
date
をUNIXタイムスタンプ
形式に変換します。
CREATE TABLE sample_times (a int, b timestamp, c timeuuid, d bigint, PRIMARY KEY (a,b,c,d));
INSERT INTO sample_times (a,b,c,d) VALUES (1, toUnixTimestamp(now()), 50554d6e-29bb-11e5-b345-feff819cdc9f, toTimestamp(now()));

SELECT toDate(c) FROM sample_times;
