Cassandra datetime多聚类列过滤

时间:2017-05-17 10:23:07

标签: cassandra

我正在使用Cassandra 3.0,我创建了一个表如下:

CREATE TABLE site (
    site_id bigint,    
   end_date timestamp,
    start_date timestamp,  
   promotion_id uuid,

   PRIMARY KEY (site_id, end_date,start_date, promotion_id)
) WITH CLUSTERING ORDER BY (end_date DESC,start_date DESC, promotion_id ASC);

我在此表中插入一条记录

insert into site (site_id, start_date,end_date,promotion_id) values (10000,'2017-05-11T16:17:48','2017-05-21T16:17:48',8999f91c-a787-4604-9479-f8ead4955f6c);

请问为什么以下cql会返回一条记录?我期待它什么都不返回:

select * from site
where site_id = 10000 and ( end_date, start_date ) <= ( '2117-05-12', '2017-04-12' );

1 个答案:

答案 0 :(得分:0)

  

也可以将“聚类”组合在一起   使用元组表示法的关系。例如:

SELECT * FROM posts
 WHERE userid = 'john doe'
   AND (blog_title, posted_at) > ('John''s Blog', '2012-01-01')
     

将请求在“John的博客”之后排序的所有行   群集顺序中blog_tile的{​​{1}}和“2012-01-01”。   特别是,具有posted_at的行将是   只要他们posted_at <= '2012-01-01'就会返回   不是这样的:

blog_title > 'John''s Blog'

这是来自cassandra文档。

因此,在您的情况下,它将返回具有SELECT * FROM posts WHERE userid = 'john doe' AND blog_title > 'John''s Blog' AND posted_at > '2012-01-01'

的所有行