如何在使用命令行时使用CQL获取当前时间戳?
我试图从命令行插入到我的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中的一些预定义的函数获取当前时间戳,以便在插入到上面的表中时,我可以使用该方法获取当前时间戳,然后插入到上面的表中?
你可以使用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参数并提取embedded的时间戳。 (从timeuuid函数的CQL文档中获取 )。
Cassandra> = 2.2.0-rc2
dateof()
在Cassandra 2.2.0-rc2中被弃用。 对于更高版本,您应该使用toTimestamp()
replace它的使用,如下所示:
INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) VALUES ('2', 'elephant', 'SOME_VALUE', toTimestamp(now()));
在新版本的cassandra
可以使用toTimestamp(now())
,并且注意不build议使用 dateof
函数。
例如
insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));