コマンドラインを使用しながら、CQLで現在のタイムスタンプを取得する方法は?

コマンドラインからCQLテーブルに挿入しようとしています。私はすべてを挿入することができます。しかし、タイムスタンプ・カラムがある場合、コマンドラインからタイムスタンプ・カラムに挿入するにはどうすればよいのでしょうか?基本的に、私は私のCQLテーブルに挿入しているときは常に現在のタイムスタンプを挿入したいです。

現在、以下のCQLテーブルに挿入する際には、タイムスタンプをハードコーディングしています。

CREATE TABLE TEST (ID TEXT, NAME TEXT, VALUE TEXT, LAST_MODIFIED_DATE TIMESTAMP, PRIMARY KEY (ID));

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) VALUES ('1', 'elephant',  'SOME_VALUE', 1382655211694);

CQLで定義済みの関数を使用して現在のタイムスタンプを取得し、上記のテーブルに挿入する際に、そのメソッドを使用して現在のタイムスタンプを取得し、上記のテーブルに挿入できる方法はありますか?

ソリューション

timeuuid関数のnow()dateof()(Cassandraの後のバージョンではtoTimestamp())を使うことができます、例)、

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
                  VALUES ('2', 'elephant',  'SOME_VALUE', dateof(now()));

now関数は引数を取らず、新しい一意のtimeuuidを生成します(これを使用したステートメントが実行された時点のものです)。dateOf関数はtimeuuidの引数を取り、埋め込まれたタイムスタンプを抽出します。(timeuuid関数](http://cassandra.apache.org/doc/cql3/CQL.html#timeuuidFun)のCQLドキュメントから引用しています)。

Cassandra >= 2.2.0-rc2

Cassandra2.2.0-rc2でdateof()が非推奨になりました。それ以降のバージョンでは、以下のようにtoTimestamp()に置き換えて使用する必要があります:

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
                  VALUES ('2', 'elephant',  'SOME_VALUE', toTimestamp(now()));
解説 (4)

新しいバージョンの cassandra では toTimestamp(now()) を使用することができますが、関数 dateofdeprecated なので注意してください。

たとえば

insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));
解説 (3)