指定cqlsh输出时区

8

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

  • ~/.cassandra/cqlshrc

但我了解到,我只能更改时间元素,无法使输出在不同的时区(比如UTC)下显示,它总是以本地时区显示时间戳。

我想知道是否有办法让cqlsh以我期望的时区或至少以UTC时区显示时间戳。
任何帮助或指针都将不胜感激。

我正在使用以下版本:
cqlsh 4.1.1 | Cassandra 2.0.6 | CQL spec 3.1.1

谢谢

4个回答

9
您可以更改环境变量以显示时区:
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)

这真是一个很棒的技巧,可以让事情得以完成。感谢您的贡献。 - Neeraj B.
2
似乎对我不起作用。我使用了[ui] TZ = IST。但它显示的时间附加了+0000。出了什么问题? - Abhidemon

1

1
谢谢回复。这两个选项的工作方式相同,只显示时区。 我想要的是能够帮助我在不同的时区(或至少是UTC)输出日期,而不是本地时区。 - Neeraj B.

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

0

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

例如:

[ui] TZ = IST


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接