我在Cassandra有一张桌子: -
CREATE TABLE printerload (
gp_date timestamp,
printed_cost float,
printed_pages int,
saved_cost float,
saved_pages int,
PRIMARY KEY (gp_date)
)
我在表格中插入了数据: -
cqlsh> select * from ga.printerload;
gp_date | printed_cost | printed_pages | saved_cost | saved_pages
--------------------------+--------------+---------------+------------+-------------
2012-01-02 10:30:00-0800 | 0.2 | 2 | 0 | 0
2013-07-10 11:30:00-0700 | 22633 | 322304 | 54.72 | 142
2012-12-15 10:30:00-0800 | 952.17 | 13524 | 0.18 | 3
2013-01-25 10:30:00-0800 | 1982.2 | 26006 | 0.66 | 0
2013-02-26 10:30:00-0800 | 23189 | 335584 | 61.44 | 84
2012-07-16 11:30:00-0700 | 25312 | 338318 | 13.16 | 25
2012-09-26 11:30:00-0700 | 19584 | 287148 | 98.64 | 319
2012-02-09 10:30:00-0800 | 5.01 | 33 | 0.12 | 0
2012-08-19 11:30:00-0700 | 21833 | 323918 | 28.42 | 395
2013-05-09 11:30:00-0700 | 16493 | 235701 | 30.27 | 232
2013-06-14 11:30:00-0700 | 681.41 | 9087 | 0 | 0
2012-08-04 11:30:00-0700 | 610.91 | 8533 | 0 | 0
2012-06-04 11:30:00-0700 | 22793 | 317440 | 4.09 | 4
2013-07-30 11:30:00-0700 | 22037 | 322377 | 34.83 | 79
2012-08-20 11:30:00-0700 | 22760 | 334601 | 8.48 | 17
我想在日期的基础上进行搜索(我使用Java客户端插入数据,其中gp_date只是日期,例如2013-07-30)。我做了一个查询: -
cqlsh> select * from ga.printerload WHERE gp_date = '2013-07-30';
(0 rows)
我需要包括时间部分以进行搜索。
cqlsh> select * from ga.printerload WHERE gp_date = '2013-07-30 11:30:00-0700';
gp_date | printed_cost | printed_pages | saved_cost | saved_pages
--------------------------+--------------+---------------+------------+-------------
2013-07-30 11:30:00-0700 | 22037 | 322377 | 34.83 | 79
但比较应仅基于日期(我想获得特定日期的记录,无论时间如何)。我怎样才能做到这一点?有没有什么方法可以比较日期部分?我正在使用Apache Cassandra 2.0.7。
答案 0 :(得分:0)
您应该将您的id数据类型表格时间戳更改为日期,之后您必须更改主键,因为在给定日期应该有许多printerload,因此将其作为普通列并使用二级索引来查询该列。
我认为它应该适合你。