【问题标题】:Cassandra date range selection to giving dataCassandra 日期范围选择以提供数据
【发布时间】:2016-02-15 19:25:04
【问题描述】:

我的 cassandra 查询在获取特定日期时间范围内的数据时遇到问题。 我的查询如下

select * from table1 where column1='abc' and time>='2015-11-13 10:43:55' and time<='2015-11-13 11:48:14'

如果我执行这个查询,它不会给出任何数据。

但是,如果我执行下面的查询(时间大于),我会得到数据

select * from table1 where column1='abc' and time>='2015-11-13 10:43:55'

但是如果执行下面的查询(时间小于),我不会得到数据。

select * from table1 where colimn1='abc' and time<='2015-11-13 11:48:14'

我怀疑故障在不到时间之内。

对此有什么想法吗?

【问题讨论】:

    标签: cassandra cassandra-2.0 cqlsh


    【解决方案1】:

    没有看到你的表格数据很难说,但我确实有一个基于经验的想法......

    您最初是如何保存 time 时间戳值的?您是否在没有毫秒的情况下插入了时间戳?还是你使用dateof(now())

    我很想看看以下的输出:

    SELECT column1, time, blobAsBigint(timestampAsBlob(time)) FROM table1
    WHERE column1='abc' AND time>'2015-11-13 10:43:55';
    

    blobAsBigint(timestampAsBlob(time)) 列中,您的最后 3 位数字是零吗?如果不是,则您的 time 值存在毫秒数。使用 time&lt;='2015-11-13 11:48:14' 查询 2015-11-13 11:48:14 时间不会产生任何结果,除非该值恰好 2015-11-13 11:48:14.000。

    使用 Cassandra 时间戳作为集群键的棘手部分是(默认情况下)它允许您使用 更多 精度,而不是在 cqlsh 中实际显示的精度。

    【讨论】:

    • 时间值来自服务,它使用 java.util.Date 来存储数据。时间戳中时间列的日期类型...
    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多