2017-02-21 73 views
1

我有一個timestamp列的表,我想操作該列的值。舉例來說,我需要沿線做一些事情:如何操縱Apache Cassandra中的時間戳列

UPDATE mytable SET datetimecolumn = datetimecolumn + 10mins

它是如何在Apache的卡桑德拉做了什麼?

UPDATE:答案似乎是「你不行」。但是選定的答案是我們可以明顯看到的最接近的答案。

回答

3

只有當數據類型是計數器時,纔可以查詢類似的這一個。

使用計數器:

計數器是用來存儲在增量改變了一些特殊的列。例如,您可以使用計數器列來計算查看頁面的次數。

僅在專用表中定義計數器並使用計數器數據類型。您不能索引,刪除或重新添加計數器列。表中的所有非計數器列必須定義爲主鍵的一部分。

例子:

CREATE TABLE mytable (
    pk1 int PRIMARY KEY, 
    datetimecolumn counter 
); 

在這裏,你必須在毫秒使用datetimecolumn值。
第一次,你必須使用更新查詢與毫秒值的時間讓我們說1487686182403

UPDATE mytable SET datetimecolumn = datetimecolumn + 1487686182403 where pk1 = 1 

現在有了PK = 1 MYTABLE包含datetimecolumn = 1487686182403值。

如果要通過10分鐘遞增datetimecolumn(600000毫秒)

UPDATE mytable SET datetimecolumn = datetimecolumn + 600000 where pk1 = 1 

來源:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html

1

預先寫入是卡桑德拉的反模式。您已經在客戶端操縱該值並像往常一樣更新;換句話說,您必須搜索(選擇)該值,進行更改(增加10分鐘),然後在cassandra更新新值。

+0

我不知道如果我理解你的答案。你能否詳細說明一下。 – adrin