当前位置: 首页 > 知识库问答 >
问题:

Cassandra timeuuid列以纳秒为精度

井轶
2023-03-14

Cassandra表具有timeuuid数据类型列,那么如何查看timeuuid类型的纳秒值?

timeuuid:

49cbda60-961b-11e8-9854-134d5b3f9cf8
49cbda60-961b-11e8-9854-134d5b3f9cf9

如何将此timeuuid转换为纳秒级需要一个select语句,如下所示:

select Dateof(timeuuid) from the table a;

共有1个答案

楚嘉
2023-03-14

driveruuids.unixTimestamp(UUID id)中有一个实用工具方法,它返回一个可以转换为日期对象的普通纪元时间戳。

值得注意的是,ns精度从UUID开始不一定有意义。类型1的uuid包括时间戳,该时间戳是自世界协调时1582年10月15日午夜首次采用公历以来的100纳秒间隔数。但是驱动程序需要1ms的时间戳(精度实际上取决于操作系统,甚至可以是10ms或40ms的精度),并保留一个单调的计数器来填充10000个未使用的精度,但如果在1ms中有超过10k的值,则可以计算到未来(注意:性能限制最终会阻止这一点)。这是更好的性能,并保证没有重复,特别是在计算机的sub ms时间精度在分布式系统中是相当没有意义的。

因此,如果您从纯CQL的角度来看,没有UDF就无法做到这一点,那么超越ms值也没有太大的价值,所以dateOf应该足够了。如果你真的想要

CREATE OR REPLACE FUNCTION uuidToNS (id timeuuid)
  CALLED ON NULL INPUT RETURNS bigint
  LANGUAGE java AS '
    return id.timestamp();
  ';

从1582年10月15日开始给你100ns。要从epoc转换为纳秒,将其乘以100换算为nanos,并添加与epoch时间的差值(-12219292800L*1_000_000_000,单位为nanos)。这可能会溢出longs,所以可能需要使用不同的东西。

 类似资料:
  • 2015-05-09 00:10:23.999750900//后9位表示纳秒 当通过模式解析时 YYYY-MM-DD HH:MM:SS.SSSSSSS//9“s”符号 null null 有没有其他方法可以通过只向标准实现提供一个模式来获得正确的解决方案,而不需要任何其他代码修改或字符串操作?

  • 本文向大家介绍nodejs如何高精度计时(纳秒)?相关面试题,主要包含被问及nodejs如何高精度计时(纳秒)?时的应答技巧和注意事项,需要的朋友参考一下 const start = process.hrtime.bigint(); // 191051479007711n setTimeout(() => { const end = process.hrtime.bigint(); // 1910

  • 问题内容: 根据java.time文档,java.time应该能够显示具有纳秒精度的LocalDateTime或LocalTime,但是当我运行并打印出来时,它仅显示3位数字而不是9位数字。 像这样: 有没有办法获得更高的精度? 问题答案: 我假设您只是在使用,在这种情况下,文档显示为: 所使用的格式将是最短的格式,用于输出被省略部分隐含为零的时间的完整值。 如果您希望显示其他数字(即使它们为零)

  • 这个问题我已经研究了一段时间,但我只能得到秒数,下面是给我的说明:编写一个程序,从代表纳秒数的标准输入中读取一个非负整数。然后,程序编写一行输出,给出等效的天、小时、分钟、秒、毫秒、微秒和纳秒的数量。例如,输入为123456789123456789。则输出为:123456789123456789纳秒等于1428天、21小时、33分钟、9秒、123毫秒、456微秒和789纳秒。这是我写的: }

  • 两个时间戳的示例 困难的部分原因是我认为没有类似的包来处理它。我不确定是否需要使用正则表达式来提取秒,然后将纳秒转换为毫秒。我愿意接受任何建议。 另外,您建议如何处理?我想我应该使用,然后像这样的包可以解析时间戳,甚至可以达到纳秒级的精度?

  • 问题内容: 这是我的代码: 是否可以在日期格式中添加毫秒和纳秒? 问题答案: 您可以通过在末尾添加来添加毫秒数,例如格式为。 毫微秒内没有参考。通常用于性能调试,而不用于显示目的。