【问题标题】:Datastax java driver Date Filter IssueDatastax java驱动程序日期过滤器问题
【发布时间】:2015-05-14 22:22:02
【问题描述】:

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

创建表 status_well
( 宽整数, 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") 但这给出了无效类型错误。

请给我建议。

【问题讨论】:

  • 您是否指定了分区键?即你要查询什么?

标签: datastax-java-driver


【解决方案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 查询,如cmets 中所述)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2016-11-29
    • 2016-11-29
    • 2016-10-06
    • 2016-03-06
    • 2018-02-15
    • 1970-01-01
    相关资源
    最近更新 更多