2013-10-27 3 views
45

Я пытаюсь вставить в свою таблицу CQL из командной строки. Я могу вставить все. Но мне интересно, есть ли у меня столбец timestamp, тогда как я могу вставить в столбце timestamp из командной строки? В принципе, я хочу, чтобы вставить текущую метку времени, когда я вставить в мой 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, чтобы при вставке в таблицу выше, я могу использовать этот метод для получения текущей метки времени, а затем вставить в таблицу выше?

ответ

82

Вы можете использовать timeuuid функции now() и dateof() (или в более поздних версиях Кассандры, toTimestamp()), например,

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) 
        VALUES ('2', 'elephant', 'SOME_VALUE', dateof(now())); 

now функция не принимает никаких аргументов и генерирует новый уникальный timeuuid (в то время, где выполняется его использование). Функция dateOf принимает аргумент timeuuid и извлекает встроенную метку времени. (Взято из документации CQL по адресу timeuuid functions).

Кассандры> = 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())); 
+0

Благодаря Лоркан .. Он отлично работает .. –

+0

@lorcan: Я мог бы также использовать timeuuid функции в моем вопросе [здесь] (http://stackoverflow.com/questions/19602979/ How-to-Get-only-the-information-that-got-changed-from-cassandra) .. Можете ли вы помочь мне по моему вопросу, поскольку я считаю, что вы могли бы помочь мне по моему вопросу. – AKIWEB

+0

Как изменить timestamp по умолчанию ... timestamp всегда поставляется с часовым поясом в cassandra .. но я не хочу часовой пояс в timestamp..так я хочу изменить формат по умолчанию..если все равно изменить? – User12345

12

В новой версии cassandra можно использовать toTimestamp(now()), и заметим, что функция dateof является устаревшим.

например

insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now())); 
+0

«В новой версии (-ах) Кассандры» - какая версия? 3.0 или это уже поддерживается в 2.x? –

+1

@AlexisWilke 'toTimestamp()' поддерживается в версии 3.0 точно, но, похоже, с 2,2, вы можете проверить: https://www.instaclustr.com/blog/2015/12/18/5-things-you- Функция to-know-about-cassandra-2-2/ –

+0

toTimestamp() недоступна в версии cassandra 2.1.8 atleast. Я просто подтвердил. –

 Смежные вопросы

  • Нет связанных вопросов^_^