【问题标题】:How do I parse datetime in KDB Q?如何在 KDB Q 中解析日期时间?
【发布时间】:2021-06-10 17:33:42
【问题描述】:

我有详细的数据:

t                    o      h      l      c      v    
------------------------------------------------------
2016-01-04T09:00:00Z 105.45 105.45 103.6  103.6  17462
2016-01-04T09:03:00Z 103.7  103.99 103.7  103.99 893  
2016-01-04T09:06:00Z 103.7  103.7  103.7  103.7  335  

我读过的:

f: `:/home/chris/sync/us_equities/AAPL.csv
show flip `t`o`h`l`c`v!("SFFFFI";",")0: f

我正在尝试研究如何将 ISO8601 时间戳解析为 KDB 可以理解的内容。我该怎么做?

这是我第一次使用q

【问题讨论】:

    标签: kdb


    【解决方案1】:

    您可以从右侧 (/:) 的每个值中删除最后一个字符 (-1_),然后将 ($) 解析为时间戳

    f: `:/home/chris/sync/us_equities/AAPL.csv
    tab:flip `t`o`h`l`c`v!("*FFFFI";",")0: f
    update "P"$-1_/:t from tab
    

    请注意,* 应用于通用文本数据,而不是 S

    【讨论】:

      【解决方案2】:

      如果您使用的是 kdb v4.0 或更高版本,您可以直接将其解析为“P”类型:

      q)("PFFFFI";1#",")0:f
      t                             o      h      l     c      v
      --------------------------------------------------------------
      2016.01.04D09:00:00.000000000 105.45 105.45 103.6 103.6  17462
      2016.01.04D09:03:00.000000000 103.7  103.99 103.7 103.99 893
      2016.01.04D09:06:00.000000000 103.7  103.7  103.7 103.7  335
      

      对于较低的 kdb 版本,您必须按照 rianoc 的建议进行操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-07
        • 2020-11-06
        • 1970-01-01
        相关资源
        最近更新 更多