DSE / Cassandra CQL now()不适用于时间戳类型

时间:2014-11-04 12:19:05

标签: cassandra cql datastax-enterprise

使用now()类型的timestamp函数时遇到了麻烦。

请查看以下代码:

创建表:

CREATE TABLE "Test" (
    video_id UUID,
    upload_timestamp TIMESTAMP,
    title VARCHAR,
    views INT,
    PRIMARY KEY (video_id, upload_timestamp)
) WITH CLUSTERING ORDER BY (upload_timestamp DESC);

有问题的INSERT查询:

INSERT INTO "Test" (video_id, upload_timestamp, title, views)
    VALUES (uuid(), now(), 'Test', 0);

INSERT查询似乎对我来说很好看。但是,当我执行它时,我看到以下错误:

Unable to execute CQL script on 'XXX': cannot assign result of function now (type timeuuid) to upload_timestamp (type timestamp)

我在这里做错了什么?

我使用DataStax Enterprise 4.5.2

1 个答案:

答案 0 :(得分:5)

now()返回timeuuid,而不是时间戳。你可以试试dateOf(now())。从文档中读取此内容:

  

dateOf和unixTimestampOf

     

dateOf和unixTimestampOf函数采用timeuuid参数和   提取嵌入的时间戳。但是,虽然功能日期   以时间戳类型返回它(大多数客户端,包括cqlsh,   解释为日期),unixTimestampOf函数将其返回为   bigint原始价值。