Datastax java驱动程序日期筛选器问题

时间:2015-05-04 13:06:56

标签: datastax-java-driver

我有一个包含一个时间戳列的表。当我尝试使用此时间戳列执行日期过滤器时,它不会给出任何结果。表结构和代码段如下。

创建表status_well
 (   wid 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(&#34; 2015-05-01&#34;),但这会产生无效的类型错误。

请告诉我这个。

1 个答案:

答案 0 :(得分:1)

data_time列有两个占位符,因此您需要使用基于索引的setter或命名占位符:

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查询,如评论中所述)