¿Cómo obtener la hora actual con CQL utilizando la línea de comandos?

Estoy tratando de insertar en mi tabla CQL desde la línea de comandos. Soy capaz de insertar todo. Pero me pregunto si tengo una columna de fecha y hora, entonces ¿cómo puedo insertar en la columna de fecha y hora desde la línea de comandos? Básicamente, quiero insertar timestamp actual cada vez que estoy insertando en mi tabla CQL -

Actualmente, estoy hardcoding la fecha y hora cada vez que estoy insertando en mi tabla CQL a continuación -

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);

¿Hay alguna manera de obtener la marca de tiempo actual utilizando algunas funciones predefinidas en CQL para que al insertar en la tabla anterior, puedo utilizar ese método para obtener la marca de tiempo actual y luego insertar en la tabla anterior?

Solución

Puede utilizar las funciones timeuuid now() y dateof() (o en versiones posteriores de Cassandra, toTimestamp()), por ejemplo,

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

La función now no toma argumentos y genera un nuevo timeuuid único (en el momento en que se ejecuta la sentencia que la utiliza). La función dateOf toma un argumento timeuuid y extrae la marca de tiempo incrustada. (Tomado de la documentación CQL sobre timeuuid functions).

Cassandra >= 2.2.0-rc2

dateof() quedó obsoleto en Cassandra 2.2.0-rc2. Para versiones posteriores se debe reemplazar su uso por toTimestamp(), como se indica a continuación:

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

En la nueva versión de cassandra podría usar toTimestamp(now()), y tenga en cuenta que la función dateof está deprecated.

Por ejemplo

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