Cassandra:忽略时区的时间戳值

时间:2016-06-13 13:21:25

标签: cassandra datastax cassandra-2.0 datastax-java-driver cassandra-3.0

我编写了一个程序,它读取包含日期的文件(格式为yyyy / MM / dd),并使用Datastax Java Driver读取日期并将其添加到cassandra表中。 因此,例如,如果我的记录包含日期值为' 2010/06/01',则此日期值将转换为日期对象(使用SimpleDateFormat类)。

但是,当我在数据库中查看数据(包含日期)时,我看到日期(在cassandra表中是时间戳类型)显示以下内容:

  2010-06-01 00:00:00+0100

这里的问题是我不希望时间戳有" + 0100" (表示这是英国的夏季时间),而不是我希望将日期存储为" 2010-06-01 00:00:00 + 0000"。

我已经对我的计划做了以下尝试,并且忽略了'通过执行以下操作来划分时区:

    SimpleTimeZone tz = new SimpleTimeZone(0, "Out Timezone");             
    TimeZone.setDefault(tz);  
    String dateStringFromFile = "2010/06/01";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    Date theDate = sdf.parse(dateStringFromFile);

...现在当我向我的程序添加调试语句时,我可以看到日期显示" 2010-06-01 00:00:00 + 0000"在我的日志文件(这适合我)。但是,当我看到存储在Cassandra中的日期时,我仍然看到日期显示为 " 2010-06-01 00:00:00 + 0100"而不是" 2010-06-01 00:00:00 + 0000"。

在cassandra方面是否有任何我必须更改或更新以忽略时区(即未在日期放置+0100并放置+0000),以便时间戳显示为" 2010- 06-01 00:00:00 + 0000"?

请注意我在Docker VM(Centos linux),Java 8上运行Cassandra 3.0.5。

感谢任何建议。

感谢。

1 个答案:

答案 0 :(得分:0)

此解决方案已经整理出来。与cqlshrc无关。它将时区强制为0(与原始帖子中的代码一样)并以毫秒为单位获取时间并将其写入数据库 - (这是时间戳类型列)