Cassandra - EQ关系不适用于时间戳主键

时间:2016-03-03 03:21:01

标签: cassandra

我有下表。

CREATE TABLE experiment(
    id uuid,
    country text,
    data text,
    insert_timestamp timestamp,
    PRIMARY KEY(insert_timestamp));

我通过

插入数据
INSERT INTO experiment(id, country, data, insert_timestamp) VALUES (uuid(), 'my', 'the data', dateof(now()));

当我

SELECT * from experiment;

我得到了

 insert_timestamp         | country | data     | id
--------------------------+---------+----------+--------------------------------------
 2016-03-03 03:04:36+0000 |      my | the data | e08cddd2-b93d-4e39-b0f3-82b813f83a87

但是,如果我SELECT通过insert_timestamp

SELECT * from experiment WHERE insert_timestamp = '2016-03-03 03:04:36+0000';

我得到空的结果。

 insert_timestamp | country | data | id
------------------+---------+------+----

(0 rows)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

  

时间戳。字符串常量允许输入时间戳作为日期,   有关详细信息,请参阅下面的日期。带有的日期戳   格式YYYY-MM-DD HH:MM:返回SS.SSS。

因此,当您使用2016-03-03 03:04:36+0000查询数据时,它被解释为2016-03-03 03:04:36.0+0000,当您插入数据时,这可能不正确。 因此它返回0行。 注意: cql shell中可见的日期格式在cqlshrc文件的UI部分中配置。

同样,dateOf函数已弃用Details。并且根据您的数据模型,如果有多个线程同时写入数据,您的数据将被覆盖。