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

时间:2013-10-27 20:54:42

标签: cassandra timestamp cql 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);

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

3 个答案:

答案 0 :(得分:101)

您可以使用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 functions上的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()));

答案 1 :(得分:14)

新版 // Updating an Item function* watchUpdate() { while(true) { const { record: unsavedItem, } = yield take(itemTypes.ITEMS_UPDATE_START); const task = yield fork( updateItemDbCrud, unsavedItem ) } } function* updateItemDbCrud(unsavedItem) { const savedItem = yield call( api.update, unsavedItem ); const result = yield put ( itemActions.updateSuccess(savedItem) ) } export default [watchUpdate] 可以使用cassandra,并注意功能toTimestamp(now()) 已弃用

e.g

dateof

答案 2 :(得分:0)

实际上有2种不同的方式可以出于不同的目的插入当前时间戳。来自docs

  

插入当前时间戳

     

使用函数插入当前   将date转换为date或timestamp字段,如下所示:

     

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

     

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