64

我正在尝试从命令行插入我的 CQL 表。我能够插入所有内容。但我想知道我是否有时间戳列,那么如何从命令行插入时间戳列?基本上,每当我插入我的 CQL 表时,我都想插入当前时间戳 -

目前,每当我插入下面的 CQL 表时,我都会对时间戳进行硬编码 -

CREATE TABLE TEST (ID TEXT, NAME TEXT, VALUE TEXT, LAST_MODIFIED_DATE TIMESTAMP, PRIMARY KEY (ID));

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) VALUES ('1', 'elephant',  'SOME_VALUE', 1382655211694);

有没有办法使用 CQL 中的一些预定义函数获取当前时间戳,以便在插入上表时,我可以使用该方法获取当前时间戳,然后插入上表?

4

3 回答 3

113

您可以使用 timeuuid 函数now()dateof()(或在 Cassandra 的更高版本中toTimestamp()),例如,

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
                  VALUES ('2', 'elephant',  'SOME_VALUE', dateof(now()));

now函数不接受任何参数并生成一个新的唯一 timeuuid(在执行使用它的语句时)。该dateOf函数采用 timeuuid 参数并提取嵌入的时间戳。(取自关于timeuuid 函数的 CQL 文档)。

卡桑德拉 >= 2.2.0-rc2

dateof()在 Cassandra 2.2.0-rc2 中已弃用。对于更高版本,您应该将其使用替换toTimestamp()为 ,如下所示:

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
                  VALUES ('2', 'elephant',  'SOME_VALUE', toTimestamp(now()));
于 2013-10-28T09:09:28.397 回答
16

在新版本中cassandra可以使用toTimestamp(now()),并注意该功能dateof弃用

例如

insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));
于 2016-02-04T18:50:36.520 回答
0

实际上有 2 种不同的方式用于不同的目的来插入当前时间戳。从文档

插入当前时间戳

使用函数将当前日期插入日期或时间戳字段,如下所示:

当前日期和时间到时间戳字段:toTimestamp(now())将时间戳设置为协调器的当前时间。

当前日期(午夜)到时间戳字段:toTimestamp(toDate(now()))将时间戳设置为当前日期的开始日期(午夜)。

于 2019-12-26T23:55:31.213 回答