2017-02-21 75 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