uuidおよびtimeuuid関数
timeuuid関数の使用について。
Cassandra 2.0.7以降には、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ビット整数タイムスタンプとして返します。
INSERT
、UPDATE
、およびSELECT
文で使用できます。toDate(timeuuid)
timeuuidをYYYY-MM-DD 形式のdateに変換します。
toTimestamp(timeuuid)
timeuuidをタイムスタンプ形式に変換します。
to UnixTimestamp(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;