基于日期的比较

时间:2014-05-08 11:35:05

标签: cql cassandra-2.0 cqlsh

我在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。

1 个答案:

答案 0 :(得分:0)

您应该将您的id数据类型表格时间戳更改为日期,之后您必须更改主键,因为在给定日期应该有许多printerload,因此将其作为普通列并使用二级索引来查询该列。

我认为它应该适合你。