Как получить текущую временную метку с CQL при использовании командной строки?
Я пытаюсь вставить в свою таблицу CQL из командной строки. Я могу вставить все. Но мне интересно, есть ли у меня столбец timestamp, тогда как я могу вставить в столбце 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, чтобы при вставке в таблицу выше я могу использовать этот метод для получения текущей метки времени и затем вставить в таблицу выше?
Ответы
Ответ 1
Вы можете использовать функции 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 и извлекает встроенную метку времени. (Взято из документации CQL на функции timeuuid).
Кассандрa >= 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()));
Ответ 2
В новой версии cassandra
можно использовать toTimestamp(now())
, и обратите внимание, что функция dateof
устарела.
например
insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));