如何在使用命令行时使用CQL获取当前时间戳?

53 timestamp cql cassandra datastax-java-driver

我试图从命令行插入我的CQL表.我能插入一切.但我想知道我是否有时间戳列,那么如何从命令行插入timestamp列?基本上,我想在插入我的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);
Run Code Online (Sandbox Code Playgroud)

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

lor*_*can 103

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

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
                  VALUES ('2', 'elephant',  'SOME_VALUE', dateof(now()));
Run Code Online (Sandbox Code Playgroud)

now函数不带参数,并生成一个新的唯一timeuuid(在执行使用它的语句时).该dateOf函数采用timeuuid参数并提取嵌入的时间戳.(摘自timeuuid函数的CQL文档).

Cassandra> = 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()));
Run Code Online (Sandbox Code Playgroud)


Eri*_*ang 15

在新版本中cassandra可以使用toTimestamp(now()),并注意该函数dateof已被弃用.

例如

insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));
Run Code Online (Sandbox Code Playgroud)