我试图从命令行插入我的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中使用一些预定义函数来获取当前时间戳,这样在插入上表时,我可以使用该方法获取当前时间戳然后插入上表?
答案 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文档)。
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()))
将时间戳记设置为 当前日期从一天的开始(午夜)。