我编写了一个程序,它读取包含日期的文件(格式为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。
感谢任何建议。
感谢。
答案 0 :(得分:0)
此解决方案已经整理出来。与cqlshrc无关。它将时区强制为0(与原始帖子中的代码一样)并以毫秒为单位获取时间并将其写入数据库 - (这是时间戳类型列)