2015-05-04 1 views
0

У меня есть стол с одной меткой. Когда я пытаюсь выполнить фильтр даты с помощью этого столбца timestamp, он не дает никаких результатов. Ниже представлена ​​структура таблицы и сегмент кода.Datastax java driver Дата Фильтрация вопроса

создать таблицу status_well
( ЖВР INT, data_time метку времени,
первичный ключ (WID, data_time) )

SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); 
PreparedStatement statement = session.prepare("select from status_well where data_time>? and data_time<?"); 
BoundStatement boundStatement=new BoundStatement(statement);  
statement.setDate("data_time", DATE_FORMAT.parse("2015-05-01")); 
statement.setDate("data_time", DATE_FORMAT.parse("2015-05-10")); 

данных существует для указанного выше диапазона дат, но не возвращает данных. Я попытался использовать строку вместо DATE_FORMAT.parse («2015-05-01»), но это приводит к ошибке недопустимого типа.

Пожалуйста, посоветуйте мне об этом.

+1

Вы указали ключ раздела? например, какую ширину вы запрашиваете? – phact

ответ

1

Есть два заполнителей для data_time столбца, поэтому необходимо использовать индекс на основе сеттеров, или именованные заполнители:

PreparedStatement statement = session.prepare("select * from status_well " 
    + "where wid = :wid " 
    + "and data_time > :min and data_time < :max"); 
BoundStatement boundStatement = new BoundStatement(statement) 
    .setInt("wid", 1) 
    .setDate("min", DATE_FORMAT.parse("2015-05-01")) 
    .setDate("max", DATE_FORMAT.parse("2015-05-10")); 

(также добавил ограничение на wid, чтобы получить действительный запрос CQL, как это было упомянутый в комментариях)