【问题标题】:KDB:How to parse a millisecond timestamp in kdbKDB:如何在 kdb 中解析毫秒时间戳
【发布时间】:2020-11-20 04:56:28
【问题描述】:

我正在尝试在 kdb 中解析以下 utc 时间戳

t:1605083972601 1605083972853 1605083972854 1605083972860 1605083972865

这样它至少可以解析到毫秒。我已尝试执行以下操作:

`datetime$("P"$10$string[`long$t])
`datetime$("P"$10$string[`long$(t*1000)])

两者都返回:

2020.11.11T08:39:32.000 2020.11.11T08:39:32.000 2020.11.11T08:39:32.000 2020.11.11T08:39:32.000

显然,将其轮到第二个是不够的。 如何在 kdb 中有效地实现这一目标? 谢谢

【问题讨论】:

    标签: kdb


    【解决方案1】:

    以下函数将 unix 转换为 Kdb 时间戳:

    {`timestamp$(1000000*x)+`long$1970.01.01D0-2000.01.01D0}
    

    Kdb 时间戳从 2000 年 1 月 1 日开始。这就是为什么 unix 时间戳必须调整 1970.01.01 和 2000.01.01 的差异

    【讨论】:

      【解决方案2】:

      另一种方法明确表明您所拥有的是自 unix 纪元以来的毫秒数:

      q)f:1970.01.01+0D00:00:00.001*
      q)f 1605083972601 1605083972853 1605083972854 1605083972860 1605083972865
      2020.11.11D08:39:32.601000000 2020.11.11D08:39:32.853000000 2020.11.11D08:39:..
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-01
        • 2013-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多