DSE/Cassandra CQL now()函数在时间戳类型中无效。

4

我遇到了使用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查询看起来很好。但是,在执行时,我看到以下错误:

无法在“XXX”上执行CQL脚本:无法将函数now(type timeuuid)的结果分配给upload_timestamp(type timestamp)

我做错了什么?

我使用DataStax Enterprise 4.5.2

1个回答

6

现在的now()函数返回的是timeuuid,而不是timestamp。你可以尝试使用dateOf(now())函数。从文档中了解一下以下内容:

dateOf和unixTimestampOf

dateOf和unixTimestampOf函数接受一个timeuuid参数并提取嵌入式时间戳。然而,虽然dateOf函数以时间戳类型返回它(大多数客户端,包括cqlsh解释为日期),unixTimestampOf函数将其作为bigint原始值返回。


它解决了我的问题。非常感谢你。 - kazy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接