コマンドラインから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ドキュメントから引用しています)。
Cassandra2.2.0-rc2でdateof()
が非推奨になりました。それ以降のバージョンでは、以下のようにtoTimestamp()
に置き換えて使用する必要があります:
INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
VALUES ('2', 'elephant', 'SOME_VALUE', toTimestamp(now()));