我无法在当地时区的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]
答案 0 :(得分:0)
时间戳始终存储为转换为GMT,然后将其转换为正确的表示形式是您的应用程序责任。在内部,时间戳记存储为长整数,并在显示时进行转换。
如果您想在cqlsh
中正确格式化此数据,则需要使用时区信息来设置~/.cassandra/cqlshrc
文件-通过timezone
配置参数完成,如下所示:< / p>
[ui]
TZ = BST
或在启动TZ
时设置cqlsh
环境变量。