如何在Apache Cassandra中操作时间戳列

时间:2017-02-21 08:31:59

标签: cassandra cql cql3

我有一个包含timestamp列的表格,我想操纵该列的值。例如,我需要做一些事情:

UPDATE mytable SET datetimecolumn = datetimecolumn + 10mins

如何在Apache Cassandra中完成?

更新:答案似乎是“你不能”。但选择的答案是我们最接近的答案。

2 个答案:

答案 0 :(得分:3)

只有当数据类型为计数器时,您才可以查询类似的这个。

使用计数器:

  

计数器是一个特殊列,用于存储以增量方式更改的数字。例如,您可以使用计数器列来计算查看页面的次数。

     

仅在专用表中定义计数器并使用计数器数据类型。您无法索引,删除或重新添加计数器列。必须将表中的所有非计数器列定义为主键的一部分。

示例:

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

这里你必须使用毫秒级的datetimecolumn值 第一次,您必须使用更新查询,时间以毫秒为单位,例如1487686182403

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

现在mytable with pk = 1包含datetimecolumn = 1487686182403的值。

如果要将datetimecolumn增加10分钟(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 :(得分:1)

read-before-write 是cassandra中的反模式。您已经在客户端操纵值并像往常一样更新;

换句话说:你必须搜索(选择)值,做更改(增加10分钟)并在cassandra更新新值。