指定cqlsh输出时区

时间:2014-10-27 19:47:45

标签: cassandra timestamp cqlsh

我在cassandra中有一个数据类型为timestamp的表。我正在使用cqlsh从数据库中获取数据,并希望更改我的timestamp列输出的输出格式。我研究过,发现我可以通过更改以下文件来更改时间戳输出格式:

  • 〜/ .cassandra / cqlshrc

但我了解到我唯一可以改变的是时间元素,我不能让输出在不同的时区(比如UTC)显示我的时间戳。它始终以我当地的时区显示时间戳。

我想知道是否有一种方法可以在我想要的时区中创建cqlsh显示时间戳,或者至少在UTC区域中显示时间戳。
任何帮助或指示表示赞赏。

我使用以下版本:
cqlsh 4.1.1 | Cassandra 2.0.6 | CQL规范3.1.1

由于

4 个答案:

答案 0 :(得分:8)

您可以更改环境变量以获取show timezone:

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)

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)

答案 1 :(得分:1)

cqlshrc timeout选项根据http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/cqlsh.html使用Python strftime语法配置数据库对象的输出格式。我还没有验证这些strftime指令是否有效,但如果您愿意尝试使用strftime()指令%z(表格+ HHMM或-HHMM和%Z(时区名称)中的UTC偏移量)。请参阅{ {3}}

答案 2 :(得分:0)

感谢您的提问。这是一种替代方法,即使用" datetime.timedelta()"获取数据后执行某些日期操作。您可以从UTC计算偏移时间,然后进行日期调整。仅供参考。

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

答案 3 :(得分:0)

您可以通过编辑〜/ .cassandra / cqlshrc来更改本地cqlsh的默认时区

前:

[UI] TZ = IST