卡桑德拉时间戳:错误的时间值

问题描述:

我是卡桑德拉的新人。我有一个Cassandra(V:3.11)表(数据)。它有一个时间戳类型的timeStampCol列,我在其中插入一个值。卡桑德拉时间戳:错误的时间值

insert into data (timeStampCol) values('2017-05-02 17:33:03'); 

虽然从表

select * from data; 

访问数据我导致像 -

@ Row 1 
----------+------------------------------------ 
timeStampCol | 2017-05-02 08:33:03.000000+0000 

插入的值和检索的值对于不同的时间。 原因可能是时区,我怎么才能得到它的正确?

您选择的时间戳值是正确的,它只显示在不同的时区。

如果你将数据插入timestamp列没有这样一个提供时区:

insert into data (timeStampCol) values('2017-05-02 17:33:03'); 

卡桑德拉会选择协调员时区

如果没有指定时区,时间卡桑德拉的区使用处理写入请求的协调器节点。为了准确,DataStax建议指定时区而不是依赖Cassandra节点上配置的时区。

需要转换字符串日期为java.util.Date和设置协调器节点的时区,对我来说,这是GMT + 6

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
Date date = dateFormat.parse("2012-01-21"); 
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+6")); //Change this time zone 

来源:https://docs.datastax.com/en/cql/3.0/cql/cql_reference/timestamp_type_r.html

+0

好了它。如果我使用Z [插入数据(timeStampCol)值('2017-05-02 17:33:03Z')]它的工作正常,没有任何转换。 – DEV