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

How to manipulate timestamp columns in Apache Cassandra

我有一个 table 和 timestamp 列,我想操纵该列的值。例如,我需要做一些事情:

UPDATE mytable SET datetimecolumn = datetimecolumn + 10mins

在 Apache Cassandra 中是如何完成的?

更新:答案似乎是"you can't"。但是选择的答案显然是我们能得到的最接近的答案。

read-before-write 是 cassandra 中的 anti-pattern。您已在客户端操纵该值并照常更新;

换句话说:您必须搜索 (select) 值,进行更改(增加 10 分钟)并在 cassandra 上更新新值。

可以查询类似这个,只要数据类型是计数器。

使用计数器:

A counter is a special column used to store a number that is changed in increments. For example, you might use a counter column to count the number of times a page is viewed.

Define a counter in a dedicated table only and use the counter data type. You cannot index, delete, or re-add a counter column. All non-counter columns in the table must be defined as part of the primary key.

示例:

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

此处必须使用以毫秒为单位的日期时间列值。
第一次,您必须使用以毫秒为单位的时间更新查询,比方说 1487686182403

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

现在 pk = 1 的 mytable 包含 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