检索已插入的数据时,cassandra日期不起作用

时间:2014-12-12 04:20:27

标签: date cassandra timestamp

"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并且抛出错误

错误:无法将'2014年12月10日01:00:00太平洋标准时间'强制转换为格式化日期(长)

在查询时看起来,日期变为'2014年12月10日01:00:00太平洋标准时间',但插入的内容是不同的格式,即'2014-12-10 01:00:00'

1 个答案:

答案 0 :(得分:1)

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

key.setRunAt(date.getTime());

在检索之后,您可以比较时间毫秒。

import com.datastax.driver.core.Row

row.getDate("run_at").getTime()