Cassandra DB中的时区

时间:2019-05-13 14:47:07

标签: cassandra-3.0 spring-data-cassandra

我无法在当地时区的cassandra中存储时间戳。我的springdata API从平面文件(从UNIX服务器填充)接收数据。数据将转换为java.util.Date并按时间戳数据类型持久存储在cassandra表中。

但是它总是会转换为GMT

String str_data = "13/05/2019 15:38:08";
DateFormat format = new SimpleDateFormat("d/M/yyyy H:m:s", Locale.ENGLISH);
Date timestamp = format.parse(str_data);
format.setTimeZone(TimeZone.getTimeZone("Europe/London"));
System.out.println("Time: "+timestamp);

我的Java控制台上的输出正确如下:

Time: Mon May 13 15:38:08 BST 2019

但是Cassandra DB是:

ts
--------------------------------
2019-05-13 14:38:08.000000+0000

我在做什么错了?

版本信息: [cqlsh 5.0.1 |卡桑德拉3.11.2 | CQL规范3.4.4 |原生协议v4]

1 个答案:

答案 0 :(得分:0)

时间戳始终存储为转换为GMT,然后将其转换为正确的表示形式是您的应用程序责任。在内部,时间戳记存储为长整数,并在显示时进行转换。

如果您想在cqlsh中正确格式化此数据,则需要使用时区信息来设置~/.cassandra/cqlshrc文件-通过timezone配置参数完成,如下所示:< / p>

[ui]
TZ = BST

或在启动TZ时设置cqlsh环境变量。