コマンドラインから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関数 に関するCQLドキュメントから引用)。
dateof()
はCassandra 2.2.0-rc2で廃止されました。それ以降のバージョンでは、次のように使用をtoTimestamp()
に置き換える必要があります。
INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
VALUES ('2', 'elephant', 'SOME_VALUE', toTimestamp(now()));
cassandra
の新しいバージョンでは、toTimestamp(now())
を使用でき、関数dateof
は非推奨であることに注意してください。
例えば
insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));