Cassandra CQL 不会 return 时间戳范围内的任何内容
Cassandra CQL does not return anything within a timestamp range
我正在使用他们的 Java API 与 Cassandra 进行交互。我有我的映射器对象用来执行 CRUD 操作的实体 类。我需要一个自定义查询来检索特定时间跨度内的所有 Purchase 对象。但是,当我 运行 下面的查询时,我从来没有在 return 中得到任何东西。有趣的是,经过更广泛的测试后,该查询确实适用于我同事的 Mac 运行ning Cassandra 3.11.2。我的机器是 运行ning 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);
终于解决了。事实证明,如果您使用 Cassandra 时间戳数据类型存储内容,则不能再 select 具有 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);
我正在使用他们的 Java API 与 Cassandra 进行交互。我有我的映射器对象用来执行 CRUD 操作的实体 类。我需要一个自定义查询来检索特定时间跨度内的所有 Purchase 对象。但是,当我 运行 下面的查询时,我从来没有在 return 中得到任何东西。有趣的是,经过更广泛的测试后,该查询确实适用于我同事的 Mac 运行ning Cassandra 3.11.2。我的机器是 运行ning 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);
终于解决了。事实证明,如果您使用 Cassandra 时间戳数据类型存储内容,则不能再 select 具有 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);