Cassandra CQL不会在时间戳范围内返回任何内容

时间:2018-05-31 13:04:59

标签: java orm cassandra timestamp datastax

我正在使用他们的Java API与Cassandra进行交互。我有mapper对象用来执行CRUD操作的实体类。我需要一个自定义查询来从特定的时间跨度检索所有我的购买对象。但是,当我在下面运行我的查询时,我从来没有得到任何回报。有趣的事实是,经过更广泛的测试,查询确实对我的同事运行Cassandra 3.11.2的Mac有效。我的机器正在运行Windows和Cassandra 3.9.0。

String query = String.format("SELECT * FROM purchase WHERE timestamp >=  %s AND timestamp <= %s ALLOW FILTERING;", startTimestamp, endTimestamp);
                purchases = session.execute(query);

我也尝试过使用IN操作,但我无法找到有关它实际操作的信息,虽然它没有抛出任何异常,但它根本找不到任何购买:

String query = String.format("SELECT * FROM purchase WHERE timestamp IN (%s , %s);", startTimestamp, endTimestamp);

1 个答案:

答案 0 :(得分:0)

我终于设法解决了。事实证明,如果使用Cassandra时间戳数据类型存储某些内容,则无法再选择具有long的项目。您必须在字符串上使用日期格式。像这样解决了:

   startDate = simpleDateFormat.format(Long.valueOf(startTimestamp));
   endDate = simpleDateFormat.format(Long.valueOf(endTimestamp));

   query = String.format("SELECT * FROM purchase WHERE timestamp >= '%s' AND timestamp <= '%s' ALLOW FILTERING;", startDate, endDate);
相关问题