【问题标题】:How to search by date range in cassandra?如何在 cassandra 中按日期范围搜索?
【发布时间】:2016-05-21 03:52:53
【问题描述】:

例如

SELECT *
FROM api_call_log
WHERE account_sid='XXXXXXXXXXXX'            AND 
      created_time >= 01-02-2016 00:00:00   AND
      created_time <= 31-02-2016 23:59:59
ALLOW FILTERING

虽然我搜索了第二个月,但我也得到了第一个月的记录。

【问题讨论】:

    标签: php cassandra cql


    【解决方案1】:

    如果没有看到您的表结构或结果集的相关部分,就很难说。但我确实注意到您没有指定 GMT 偏移量,这意味着您实际上是在通过默认本地偏移量进行查询。问题是 Cassandra 是按 GMT+0000 存储的。

    例如,如果您的 GMT 偏移量为 -0600(如我),则查询 GMT-0600 会丢失 2 月 1 日以来 6 小时的数据。例如,如果我有一行2016-02-01 01:00:00+0000,则此查询不会返回它:

    aploetz@cqlsh:stackoverflow> SELECT * FROm events WHERe monthbucket='201602' 
        AND eventdate >= '2016-02-01 00:00:00';
    
     monthbucket | eventdate | beginend | eventid | eventname
    -------------+-----------+----------+---------+-----------
    
    (0 rows)
    

    那是因为2016-02-01 01:00:00+0000 本质上是2016-01-31 19:00:00-0600。因此,如果我添加 0000 的 GMT 偏移量,我会看到该行。

    aploetz@cqlsh:stackoverflow> SELECT * FROm events WHERe monthbucket='201602'
        AND eventdate >= '2016-02-01 00:00:00+0000';
    
     monthbucket | eventdate                | beginend | eventid                              | eventname
    -------------+--------------------------+----------+--------------------------------------+-------------------
          201602 | 2016-02-01 01:00:00+0000 |        b | 78d2c2b7-c4ec-408f-be37-eccc0c05727d | test month border
    
    (1 rows)
    

    我的猜测是,由于具有 GMT 偏移量,您可能会遇到相反的问题(额外行与缺失行)。未在查询中指定偏移量可能是它包含上个月的行的原因。如果是这种情况,那么您可能需要这些行。

    另外,不要使用ALLOW FILTERING。一如既往。

    【讨论】:

      【解决方案2】:

      试试这个

      SELECT * FROM api_call_log WHERE account_sid='XXXXXXXXXXXX' AND jobs.created_at between '01-02-2016 00:00:00' and '31-02-2016 23:59:59';
      

      还要检查日期列的 DATE/TIME 格式

      【讨论】:

      • between 不适用于 Cassandra。我认为 OP 不小心包含了 mysql 标签。
      猜你喜欢
      • 2018-12-30
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2018-10-13
      • 2017-07-15
      • 1970-01-01
      相关资源
      最近更新 更多