2013-10-27 7 views
45

コマンドラインから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のいくつかの事前定義された関数を使用して現在のタイムスタンプを取得しますか?

答えて

82

あなたはnow関数は引数を取らず、どこ時点で新しいユニークなtimeuuidを(生成

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

、例えば、timeuuid機能now()dateof()(またはカサンドラ、toTimestamp()以降のバージョンの)を使用することができますそれを使用する文が実行されます)。 dateOf関数はtimeuuid引数をとり、埋め込みタイムスタンプを抽出します。 (timeuuid functionsのCQLのドキュメントを参考にしてください)。

カサンドラ> = 2.2.0-RC2

dateof()

は、Cassandraの2.2.0-RC2で廃止されました。 toTimestamp(now())を使用することができcassandraの新バージョンでは

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

おかげでそれが正常に動作します。.. lorcan .. –

+0

@lorcan:私も[ここ](私の質問にtimeuuidの機能を使用している可能性がありhttp://stackoverflow.com/questions/19602979/どのように情報を取得するだけの情報を取得したから)あなたが私の質問で私を助けることができると信じて私の質問に私を助けることができます.. – AKIWEB

+0

変更方法デフォルトのタイムスタンプ... timestampは常にcassandraにタイムゾーンが付いていますが、タイムスタンプでタイムゾーンを望んでいません。デフォルトのフォーマットを変更したいと思います。 – User12345

12

を、その機能dateofを廃止予定である点に注意してください。それ以降のバージョンのためには、次のように、toTimestamp()とその使用を置き換える必要があります。

例えば

insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now())); 
+0

「カッサンドラの新しいバージョンで」 - どのバージョンですか? 3.0または既に2.xでサポートされていましたか? –

+1

@AlexisWilke 'toTimestamp()'は3.0ではサポートされていますが、2.2以降であると思われます。https://www.instaclustr.com/blog/2015/12/18/5-things-you- need-to-know-about-cassandra-2-2/ –

+0

toTimestamp()関数は、バージョン2.1.8以降では使用できません。私はちょうど確認した。 –

関連する問題