2013-10-27 9 views
45

Sto provando ad inserire nella mia tabella CQL dalla riga di comando. Sono in grado di inserire tutto. Ma mi chiedo se ho una colonna timestamp, quindi come posso inserire nella colonna timestamp dalla riga di comando? Fondamentalmente, voglio inserire timestamp corrente ogni volta che sto inserendo nel mio tavolo CQL -Come ottenere il timestamp corrente con CQL mentre si utilizza Command Line?

Attualmente, sto hardcoding il timestamp ogni volta che inserisco nella mia tabella sottostante 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); 

Esiste un modo per ottenere il timestamp corrente usando alcune funzioni predefinite in CQL in modo tale che mentre si inserisce nella tabella sopra, posso usare quel metodo per ottenere il timestamp corrente e quindi inserirlo nella tabella sopra?

risposta

82

È possibile utilizzare le funzioni timeuuid now() e dateof() (o nelle versioni successive di Cassandra, toTimestamp()), ad esempio,

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

La funzione now non ha argomenti e genera un nuovo timeuuid unico (al momento in cui la dichiarazione che lo usa è eseguita). La funzione dateOf accetta un argomento timeuuid ed estrae il timestamp incorporato. (Tratto dalla documentazione CQL su timeuuid functions).

Cassandra> = 2.2.0-RC2

dateof() è stata sconsigliata a Cassandra 2.2.0-RC2. Per le versioni successive è necessario sostituire il suo utilizzo con toTimestamp(), come segue:

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

Grazie Lorcan .. Funziona bene .. –

+0

@lorcan: Potrei anche utilizzerò funzioni timeuuid nella mia interrogazione [qui] (http://stackoverflow.com/questions/19602979/ come-per-recuperare-solo-l'-informazione-che-è-cambiato-da-cassandra). Puoi aiutarmi nella mia domanda in quanto ritengo che potresti essere in grado di aiutarmi nella mia domanda .. – AKIWEB

+0

come cambiare timestamp di default ... timestamp viene sempre con timezone in cassandra..ma non voglio timezone in timestamp..so voglio cambiare il formato predefinito..è lì comunque a cambiare? – User12345

12

Nella nuova versione del cassandra potrebbe usare toTimestamp(now()), e notare che la funzione è dateofdeprecato.

esempio

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

"Nelle nuove (er) versioni di Cassandra" - che versione è? 3.0 o era già supportato in 2.x? –

+1

@AlexisWilke 'toTimestamp()' è supportato in 3.0 di sicuro, ma sembra che sia dal 2,2, è possibile controllare: https://www.instaclustr.com/blog/2015/12/18/5-things-you- La funzione to-know-about-cassandra-2-2/ –

+0

toTimestamp() non è disponibile in cassandra versione 2.1.8 atleast. Ho appena verificato. –