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ビット整数タイムスタンプとして返します。

DataStax Enterprise 5.0以降では、日付を操作するための追加のtimeuuid関数とタイムスタンプ関数をサポートしています。これらの関数は、INSERTUPDATE、およびSELECT文で使用できます。
  • toDate(timeuuid)

    timeuuidをYYYY-MM-DD 形式のdateに変換します。

  • toTimestamp(timeuuid)

    timeuuidタイムスタンプ形式に変換します。

  • toUnixTimestamp(timeuuid)

    timeuuidUNIXタイムスタンプ形式に変換します。

  • toDate(timestamp)

    timestampをYYYY-MM-DD 形式のdateに変換します。

  • toUnixTimestamp(timestamp)

    timestampUNIXタイムスタンプ形式に変換します。

  • toTimestamp(date)

    dateタイムスタンプ形式に変換します。

  • toUnixTimestamp(date)

    dateUNIXタイムスタンプ形式に変換します。

以下の新しい関数の例では、テーブルを作成し、時間に関係するさまざまな値を挿入します。
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;