【问题标题】:cassandra date not working while retrieving already inserted data检索已插入的数据时,cassandra 日期不起作用
【发布时间】:2014-12-12 18:14:32
【问题描述】:
"CREATE TABLE IF NOT EXISTS part_prices_by_context_run_at ( "
            + "context text, run_at timestamp,feed_type text, "
            + "part text, price double, "
            + "PRIMARY KEY ((context, run_at), part))"    

"INSERT INTO part_prices_by_context_run_at  (context,run_at,feed_type,part,price)" +

" VALUES ('US|en-us|consumer','2014-12-10 01:00:00','partial','MXFL1/A',236.29)"

String oldstring = "2014-12-10 01:00:00";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = format.parse(oldstring);

PartPricesByContextRunAtKeyImpl key = new PartPricesByContextRunAtKeyImpl();
key.setContext("US|en-us|consumer");
key.setRunAt(date);

Collection<PartPricesByContextRunAt> partPrices = dao.retrievePartPrices(key);
Assert.assertNotNull(partPrices);    

断言失败,因为 partPrices 始终为 null 并抛出错误

错误:无法将“Wed Dec 10 01:00:00 PST 2014”强制转换为格式化日期(长)

看起来在查询时,日期变为“Wed Dec 10 01:00:00 PST 2014”,但插入的格式不同,即“2014-12-10 01:00:00”

【问题讨论】:

    标签: date cassandra timestamp


    【解决方案1】:

    由于 run_attimestamp 数据类型,我想您应该将 run_at 的值设置为 Long 并以毫秒为单位比较时间。

    key.setRunAt(date.getTime());
    

    检索后也可以比较时间毫秒。

    import com.datastax.driver.core.Row
    
    row.getDate("run_at").getTime()
    

    【讨论】:

      猜你喜欢
      • 2016-07-16
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2016-05-30
      相关资源
      最近更新 更多