【问题标题】:How to write a query using DATE data type in cassandra query language?如何在 cassandra 查询语言中使用 DATE 数据类型编写查询?
【发布时间】:2020-03-02 20:31:34
【问题描述】:

我已经创建了表格                                        

create table testdates2(dates date primary key,ate text);

insert into testdates2(2018-04,'nov');

我收到了这个错误

SyntaxException:第 1:23 行在输入“2018”处没有可行的替代方案 (插入 testdates2([2018]...)

【问题讨论】:

    标签: cassandra cql cqlsh


    【解决方案1】:

    格式为yyyy-mm-dd,这意味着您也必须始终坚持一天。这是一个使用您的架构的示例,它将为 2018 年 4 月 1 日插入一行。我为 ate 列选择了一个随机值。

    cqlsh> insert into testdates2 (dates, ate) VALUES ('2018-04-01', 'Soup');
    cqlsh> select * from testdates2;
    
     dates      | ate
    ------------+------
     2018-04-01 | Soup
    
    (1 rows)
    

    您可以在 DataStax's documentation 中找到有关在 Cassandra 中使用日期值的更多详细文档。

    编辑基于关于时间戳与日期的评论。

    timestamp 具有更高的分辨率,它可以指向事件发生的确切秒数,而date 可以指向事件发生的日期。

    假设我想确切地知道汤是在几秒钟内被吃掉的,我可以使用时间戳类型而不是日期类型。

    ALTER TABLE testdates2 ADD time_eaten timestamp;
    insert into testdates2 (dates, ate, time_eaten) VALUES ('2018-04-01', 'Soup', 1522576800);
    

    1522576800 和 2019-04-01 都代表 2018 年 4 月 1 日,但时间戳还指定事件发生在上午 10 点。

    【讨论】:

    • 我可以知道 cassandra 中 DATE 的数据类型是什么吗?它只是“日期”还是“时间戳”? “日期”和“时间戳”有什么区别?
    • 两者都代表时间,但timestamp 具有更高的分辨率,它可以指向事件发生的确切秒,而date 可以指向事件发生的日期。您要使用哪一个取决于您希望的准确度。
    • 我们如何将值从“null”更改为 date?我已将 create_date 列添加到现有表中。值为 null。如何更改值?
    • InvalidRequest: 来自服务器的错误:code=2200 [Invalid query] message="Invalid STRING constant (2018-04-01) for "create_date" of type set" 当我更新时有一个问题
    猜你喜欢
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多