我在cassandra中有一个数据类型为timestamp的表。我正在使用cqlsh从数据库中获取数据,并希望更改我的timestamp列输出的输出格式。我研究过,发现我可以通过更改以下文件来更改时间戳输出格式:
但我了解到我唯一可以改变的是时间元素,我不能让输出在不同的时区(比如UTC)显示我的时间戳。它始终以我当地的时区显示时间戳。
我想知道是否有一种方法可以在我想要的时区中创建cqlsh显示时间戳,或者至少在UTC区域中显示时间戳。
任何帮助或指示表示赞赏。
我使用以下版本:
cqlsh 4.1.1 | Cassandra 2.0.6 | CQL规范3.1.1
由于
答案 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