【问题标题】:DSE/Cassandra CQL now() does not work for timestamp typeDSE/Cassandra CQL now() 不适用于时间戳类型
【发布时间】:2014-11-04 20:32:32
【问题描述】:

我在使用带有timestamp 类型的now() 函数时遇到问题。

请看下面的代码:

表创建:

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

【问题讨论】:

    标签: cassandra cql datastax-enterprise


    【解决方案1】:

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

    dateOf 和 unixTimestampOf

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

    【讨论】:

    • 它解决了我的问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 2014-05-10
    • 2018-06-24
    • 2012-02-11
    • 1970-01-01
    • 2014-05-15
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多