我在卡桑德拉有一张桌子:
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 client插入数据,其中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。
发布于 2014-06-04 18:10:07
您应该将id数据类型从timestamp更改为date,之后您必须更改主键,因为在给定日期应该有许多printerload,因此将其设置为普通列,并使用辅助索引对该列进行查询。
我想这对你来说应该是有效的。
https://stackoverflow.com/questions/23540620
复制相似问题