2016-04-06 9 views
4

私はcqlshを使用して、私のカサンドラのDB内の既存のアイテムを更新しようとしています:カサンドラ:強制できません「2016年4月6日13:06:11.534000」フォーマットされた日付まで(ロング)

$ > UPDATE allEvents SET "isLastEvent" = True WHERE "websiteId" = 'sd-8231' 
AND "purchaser" = False 
AND "currentTime" = '2016-04-06 13:06:11.534000'; 

そして、私はこれを得た:

InvalidRequest:コード= 2200 [無効なクエリ]メッセージ= "強制することができません '2016年4月6日13:06:11.534000'(長い)フォーマットされた日付を"

場合に役立ちます:

$ > show version 
[cqlsh 5.0.1 | Cassandra 3.0.2 | CQL spec 3.3.1 | Native protocol v4] 
+0

余分な精度が必要ですか? Cassandraのタイムスタンプタイプはミリ秒単位でしかサポートされません。より高い精度が必要な場合は、100ナノ秒の間隔で正確なtimeuuidタイプ(UUIDv1)を使用できます。 – fromanator

答えて

9

カッサンドラのタイムスタンプタイプはミリ秒単位しかサポートしないからです。 currentTimeの精度が高すぎます。最後の3つの0を切り捨てれば、それはうまくいくはずです:

UPDATE allEvents SET "isLastEvent" = True 
WHERE "websiteId" = 'sd-8231' 
     AND "purchaser" = False 
     AND "currentTime" = '2016-04-06 13:06:11.534'; 
+0

ご回答ありがとうございますが、私はそれを挿入したときになぜこれは問題にならないのですか? – farhawa

+1

@farhawa私は、あなたがCassandraにデータを挿入するために使用しているクライアントが、更新とは異なる方法で挿入を処理し、余分な精度を黙って削除していると推測しています。 – fromanator

関連する問題