【发布时间】:2016-10-13 22:36:42
【问题描述】:
我编写了一个程序,它读取包含日期(yyyy/MM/dd 格式)的文件,并使用 Datastax Java 驱动程序读取日期并将其添加到 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。
感谢任何建议。
谢谢。
【问题讨论】:
-
您如何查看您的数据。如果通过 cqlsh 则更改 cqlshrc 文件的 UI 部分
-
您好,我使用 DBeaver(这是一个 UI 程序)。
-
该实用程序可能正在这样做。检查你的java代码或cqlsh
-
您好,除了使用 DBeaver,我还使用了 CQLSH 和 Datastax DevCenter。我可以看到无论我使用什么实用程序,问题仍然存在。我还查看了我的 Java 代码,在我之前的帖子中向代码中添加了调试语句后,Java 程序中的所有日期都显示为 GMT(带有 +0000,而不是 +0100)。但是 cassandra 仍将其存储为 +0100。这可能是 Cassandra 中需要更改的时区设置吗?或者也许在 Linux 操作系统级别?任何建议表示赞赏。
-
如果你从cqlsh插入数据,你读的时候还看到问题吗?如果您可以重现问题,示例代码和创建语句会有所帮助。
标签: cassandra datastax cassandra-2.0 datastax-java-driver cassandra-3.0