Cassandra CQL ничего не возвращает в диапазоне временных отметок - PullRequest
0 голосов
/ 31 мая 2018

Я работаю с Cassandra, используя их Java API для взаимодействия с ним.У меня есть классы сущностей, которые мой объект Mapper использует для выполнения CRUD-операций.Мне нужен был пользовательский запрос, чтобы получить все мои объекты покупки за определенный промежуток времени.Однако когда я запускаю свой запрос ниже, я никогда ничего не получаю взамен.Интересный факт, однако, после более тщательного тестирования, запрос работает на Mac моего коллеги с Cassandra 3.11.2.Моя машина работает под управлением 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 голосов
/ 04 июня 2018

Мне наконец удалось решить.Оказывается, если вы сохраняете что-то с типом данных метки времени Cassandra, вы больше не можете выбирать элемент с длинным.Вы должны использовать формат даты в строке.Решил это так:

   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);
...