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

kaz*_*azy 2 cql cassandra 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);
Run Code Online (Sandbox Code Playgroud)

有问题的INSERT查询:

INSERT INTO "Test" (video_id, upload_timestamp, title, views)
    VALUES (uuid(), now(), 'Test', 0);
Run Code Online (Sandbox Code Playgroud)

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

ash*_*hic 5

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

dateOf和unixTimestampOf

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