【问题标题】:How to get current timestamp with CQL while using Command Line?使用命令行时如何使用 CQL 获取当前时间戳?
【发布时间】:2013-11-06 13:18:31
【问题描述】:

我正在尝试从命令行插入我的 CQL 表。我能够插入所有内容。但我想知道我是否有时间戳列,那么如何从命令行插入时间戳列?基本上,我想在插入 CQL 表时插入当前时间戳 -

目前,每当我插入下面的 CQL 表时,我都会对时间戳进行硬编码 -

CREATE TABLE TEST (ID TEXT, NAME TEXT, VALUE TEXT, LAST_MODIFIED_DATE TIMESTAMP, PRIMARY KEY (ID));

INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE) VALUES ('1', 'elephant',  'SOME_VALUE', 1382655211694);

有没有什么方法可以使用 CQL 中的一些预定义函数获取当前时间戳,以便在插入上表时,我可以使用该方法获取当前时间戳,然后插入上表?

【问题讨论】:

    标签: cassandra timestamp cql datastax-java-driver


    【解决方案1】:

    您可以使用 timeuuid 函数 now()dateof()(或在 Cassandra 的更高版本中,toTimestamp()),例如,

    INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
                      VALUES ('2', 'elephant',  'SOME_VALUE', dateof(now()));
    

    now 函数不接受任何参数并生成一个新的唯一 timeuuid(在执行使用它的语句时)。 dateOf 函数采用 timeuuid 参数并提取嵌入的时间戳。 (取自 timeuuid functions 上的 CQL 文档)。

    卡桑德拉 >= 2.2.0-rc2

    dateof() 在 Cassandra 2.2.0-rc2 中已弃用。对于更高版本,您应该将其使用替换为toTimestamp(),如下所示:

    INSERT INTO TEST (ID, NAME, VALUE, LAST_MODIFIED_DATE)
                      VALUES ('2', 'elephant',  'SOME_VALUE', toTimestamp(now()));
    

    【讨论】:

    • @lorcan:我可能也在我的问题here 中使用timeuuid 函数。你能帮我解决我的问题吗,因为我相信你可以帮助我解决我的问题..跨度>
    • 如何更改默认时间戳...时间戳总是带有 cassandra 中的时区..但我不想要时间戳中的时区..所以我想更改默认格式..无论如何改变?
    • 完美!正是我正在寻找的那种功能。
    • 我的本地机器时区是 IST,但是,时间戳采用 UTC 时区并存储值。有什么问题?
    【解决方案2】:

    在新版本的cassandra 中可以使用toTimestamp(now()),并注意函数dateof弃用

    例如

    insert into dummy(id, name, size, create_date) values (1, 'Eric', 12, toTimestamp(now()));
    

    【讨论】:

    • "在 Cassandra 的新版本中" — 那是什么版本? 3.0 还是 2.x 已经支持?
    • @AlexisWilke toTimestamp() 在 3.0 中是肯定支持的,但似乎是从 2.2 开始,你可以查看:instaclustr.com/blog/2015/12/18/…
    • toTimestamp() 函数至少在 cassandra 版本 2.1.8 中不可用。我刚刚验证了。
    【解决方案3】:

    实际上有 2 种不同的方式用于不同的目的来插入当前时间戳。来自docs

    插入当前时间戳

    使用函数插入当前 将日期转换为日期或时间戳字段,如下所示:

    当前日期和时间 进入时间戳字段:toTimestamp(now()) 将时间戳设置为 协调器的当前时间。

    当前日期(午夜)到 时间戳字段:toTimestamp(toDate(now())) 将时间戳设置为 当前日期一天的开始(午夜)。

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 2011-02-16
      • 1970-01-01
      • 2019-07-21
      • 2021-12-04
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多