2014-10-27 7 views
7

Ich habe eine Tabelle in Cassandra mit einem Datentyp von Timestamp. Ich benutze Cqlsh, um Daten aus der Datenbank zu bekommen, und wollte das Ausgabeformat ändern, wie meine Timestamp-Spaltenausgabe aussieht. Ich recherchierte um und fand, dass ich den Zeitstempel Ausgabeformat durch Änderungen an der Datei ändern können:spezifizieren cqlsh Ausgabe Zeitzone

  • ~/.cassandra/cqlshrc

Aber ich habe gelernt, dass die einzige Änderung, die ich machen kann, ist, die Zeitelemente, ich kann die Ausgabe nicht machen, um meine Zeitstempel in einer anderen Zeitzone (sagen UTC) anzuzeigen. Es zeigt immer die Zeitstempel in meiner lokalen Zeitzone an.

Ich wollte wissen, ob es eine Möglichkeit gibt, cqlsh Zeitstempel in meiner gewünschten Zeitzone oder zumindest in der UTC-Zone anzuzeigen.
Jede Hilfe oder Hinweise sind willkommen.

Ich verwende die folgenden Versionen:
cqlsh 4.1.1 | Kassandra 2.0.6 | CQL spec 3.1.1

Dank

Antwort

7

Sie können Ihre Umgebungsvariable ändern Show Zeitzone zu erhalten:

TZ=America/Los_Angeles cqlsh -k mpj `hostname` -e 'select time from userbehavior limit 3' 

time 
-------------------------- 
2015-02-15 21:17:03-0800 
2015-02-15 18:16:21-0800 
2015-02-15 00:04:52-0800 

(3 rows) 

und:.

TZ=UTC cqlsh -k mpj `hostname` -e 'select time from userbehavior limit 3' 

time 
-------------------------- 
2015-02-16 05:17:03+0000 
2015-02-16 02:16:21+0000 
2015-02-15 08:04:52+0000 

(3 rows) 
+0

es ist wirklich ein netter Trick, um Dinge zu erledigen. Danke für Ihre Eingaben. –

+1

Scheint nicht für mich zu arbeiten. Ich benutzte [UI] TZ = IST. Aber es zeigt Zeiten von +0000 angehängt. Was ist los? – Abhidemon

1

Die cqlshrc Timeout Option konfiguriert das Ausgabeformat von Datenbankobjekten nach http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/cqlsh.html Python Strftime Syntax. Ich habe nicht überprüft, dass diese strftime-Anweisungen funktionieren, aber wenn Sie experimentieren möchten, versuchen Sie es mit der strftime() -Direktive% z (UTC-Offset in der Form + HHMM oder -HHMM und% Z (Zeitzonenname). Siehe https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior .

+1

Danke für die Antwort. Beide Optionen funktionieren auf die gleiche Weise und zeigen nur die Zeitzone an. Ich wollte etwas, das mir helfen kann, das Datum in einer anderen Zeitzone (oder zumindest UTC) auszugeben, nicht in einer lokalen Zeitzone. –

0

Danke für die Frage hier nur eine alternative Möglichkeit ist, die eine gewisse Datum Betrieb ist zu tun nachdem Sie die Daten mit "datetime.timedelta() ". Sie können die Offsetzeit aus UTC berechnen und dann eine Datumsanpassung vornehmen. Nur dass du weist.

>>> import datetime 
>>> offset = -10 # in hours 
>>> original = '08/19/2015 10:59' 
>>> adjusted = datetime.datetime.strptime(original, '%m/%d/%Y %H:%M') + datetime.timedelta(hours=offset) 
>>> print adjusted.strftime('%m/%d/%Y %H:%M') 
    08/19/2015 00:59 
0

Sie können durch das Bearbeiten von ~/.cassandra/cqlshrc Standard-Zeitzone des lokalen cqlsh ändern

Ex:

[ui] TZ = IST