【问题标题】:how to get the system-date using cql query in cassandra如何在 cassandra 中使用 cql 查询获取系统日期
【发布时间】:2014-04-23 21:17:47
【问题描述】:

我想检索那些属于今天日期的数据,我尝试了下面的事情

select * from tablename where fieldname = dateof(now());

此查询同时提供日期和系统时间,因此结果将不正确。

我怎样才能只获得当前(今天的)日期?

【问题讨论】:

    标签: cassandra cql cql3


    【解决方案1】:

    根据您的问题,列族表名使用时间戳字段名作为主键。在这种情况下,每一行都由时间戳而不是日期标识,因此您无法按日期查询。

    基于此,您必须更改数据模型以另一种方式定义主键。一种可能性是使用像这样创建的表:

    USE test;
    
    create table posts(username varchar, 
        time timeuuid, 
        post_text varchar, 
        primary key(username, time)
    );
    
    insert into posts(username, time, post_text) 
    values ('me', now(), 'Example');
    
    insert into posts(username, time, post_text) 
    values ('me', now(), 'Example');
    
    select username, dateOf(time), post_text from posts;
    

    在这种情况下,您会得到两个这样的结果

    因此,如果您想查询特定日期,可以使用:

    选择用户名, 日期(时间), post_text 来自帖子 其中时间 >= minTimeuuid('2014-04-23 00:00') 和时间


    来源:

    http://cassandra.apache.org/doc/cql3/CQL.html#usingdates

    http://christopher-batey.blogspot.nl/2013/05/time-series-based-queries-in-cassandra.html

    【讨论】:

    • sliglty 我更改了插入语句值中的数据('me',now(),'Example');值('me1',现在(),'Example1');并执行最后一个查询,例如 select username, dateOf(time), post_text from posts where time >= minTimeuuid('2014-04-23 00:00') and time
    • 原因是您尝试仅使用部分主键进行过滤,这被认为是一个潜在的昂贵查询。您仍然可以使用以下内容进行查询:从时间 >= minTimeuuid('2014-04-23 00:00') 和时间 datastax.com/documentation/cql/3.0/cql/cql_reference/…
    • 知道了。感谢您的帮助。
    猜你喜欢
    • 2021-10-20
    • 2021-11-03
    • 2015-05-30
    • 2014-11-15
    • 2019-05-18
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多