卡桑德拉时间戳不准确?

时间:2015-04-15 00:48:21

标签: java cassandra timestamp cql

我正在使用cassandra-maven-plugin和Maven故障保护来为处理与Cassandra相关的操作的类执行TestNG集成测试。

在尝试查找为什么我对类型为timestamp的列的查询总是失败时;我注意到一些奇怪的东西。首先,我用作参数的日期和从Cassandra检索的日期看起来是一样的,我将它们格式化为String进行比较。

但是当我用毫秒来比较它们时,我注意到Cassandra的日期比我用于查询的日期提前了大约1000毫秒。

然后我直接使用毫秒来设置行的时间戳值,但Cassandra再次返回一个额外毫秒的日期。

问题是,这是一个已知的错误吗?

现在我将使用日期的String或Long表示来解决此问题;但我想知道发生了什么事?

谢谢!

编辑:我正在使用Windows 8.1运行测试。

这是我加载到嵌入式Cassandra的(有点消毒的)数据集文件:

CREATE KEYSPACE IF NOT EXISTS analytics WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 };

CREATE TABLE IF NOT EXISTS analytics.events (id text, name text, start_time timestamp, end_time timestamp, parameters map<text,text>, PRIMARY KEY (id));
CREATE TABLE IF NOT EXISTS analytics.errors (id text, message text, time timestamp, parameters map<text,text>, PRIMARY KEY (id, time));
CREATE TABLE IF NOT EXISTS analytics.reports (name text, time timestamp, period int, data blob, PRIMARY KEY (name, period));
CREATE TABLE IF NOT EXISTS analytics.user_preferences (company_id text, user_principal text, opted_in boolean, PRIMARY KEY (company_id, user_principal));

CREATE INDEX IF NOT EXISTS event_name ON analytics.events (name);
CREATE INDEX IF NOT EXISTS report_time ON analytics.reports (time);

INSERT INTO analytics.user_preferences (company_id, user_principal, opted_in) VALUES ('company1', 'user1', true);
INSERT INTO analytics.user_preferences (company_id, user_principal, opted_in) VALUES ('company3', 'user3', false);

INSERT INTO analytics.reports (name, time, period, data) VALUES ('com.example.SomeReport1', null, 3, null);
INSERT INTO analytics.reports (name, time, period, data) VALUES ('com.example.SomeReport2', 1296691200000, 1, null);

这是我的疑问:

SELECT * FROM analytics.reports WHERE name = ? AND period = ? AND time = ? LIMIT 1;

当我使用row.getDate(&#34; time&#34;)获取时间字段时,它会有额外的毫秒数。

0 个答案:

没有答案