我有一个包含一个时间戳列的表。当我尝试使用此时间戳列执行日期过滤器时,它不会给出任何结果。表结构和代码段如下。
创建表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;),但这会产生无效的类型错误。
请告诉我这个。
答案 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查询,如评论中所述)