2014-10-27 18 views
7

Mam tabelę w języku kassandra o typie datownika. Używam cqlsh do pobierania danych z bazy danych i chciałem zmienić format wyjściowy, jak wygląda moje wyjście kolumny czasowej. Badałem się i okazało się, że mogę zmienić format wyjściowy datownik, dokonując zmian w następujący plik:Określanie strefy czasowej wyjścia cqlsh

  • ~/.cassandra/cqlshrc

ale dowiedziałem się, że jedyną zmianą mogę zrobić to elementy czasu, nie mogę sprawić, by dane wyjściowe wyświetlały moje sygnatury czasowe w innej strefie czasowej (np. UTC). Zawsze wyświetla znaczniki czasu w mojej lokalnej strefie czasowej.

Chciałem wiedzieć, czy istnieje sposób mogę dokonać cqlsh znacznik czasu wyświetlania w moim żądanej strefie czasowej, lub przynajmniej w strefie UTC.
Każda pomoc lub wskazówki są mile widziane.

Używam następujących wersji:
cqlsh 4.1.1 | Cassandra 2.0.6 | CQI Spec 3.1.1

Dzięki

Odpowiedz

7

można zmienić zmienną środowiskową, aby pokazać czasowa:

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) 

i:.

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

to naprawdę fajna sztuczka, aby załatwić sprawy. Dzięki za twoje dane wejściowe. –

+1

Wydaje się, że nie działa dla mnie. Użyłem [ui] TZ = IST. Ale pokazuje czasy dołączone przez +0000. Co jest nie tak? – Abhidemon

1

Opcja limitu czasu cqlshrc konfiguruje format wyjściowy obiektów bazy danych z użyciem składni Pythona strftime według http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/cqlsh.html. Nie sprawdziłem, czy te dyrektywy strftime działają, ale jeśli chcesz eksperymentować, spróbuj użyć dyrektywy strftime()% z (przesunięcie UTC w formie + HHMM lub -HHMM i% Z (nazwa strefy czasowej). Patrz: https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior .

+1

Dzięki za odpowiedź. Obie te opcje działają w ten sam sposób i pokazują strefę czasową. Chciałem czegoś, co może mi pomóc wydrukować datę w innej strefie czasowej (lub co najmniej UTC), a nie lokalnej strefie czasowej. –

0

Dzięki za pytanie Oto właśnie alternatywny sposób, który jest zrobić kilka operacji datę po pobraniu danych przy użyciu "datetime.timedelta() ". Możesz obliczyć czas przesunięcia z UTC, a następnie dokonać korekty daty. Tylko dla twojego odniesienia.

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

Można zmienić domyślną strefę czasową lokalnego cqlsh przez edycję ~/.cassandra/cqlshrc

Ex:

[Ui] TZ = ist

Powiązane problemy