如何在 KDB Q 中解析日期时间?
How do I parse datetime in KDB Q?
我有详细的数据:
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
。
您可以从右侧的每个值 (/:
) 中删除最后一个字符 (-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
如果您使用的是 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 的建议进行操作。
我有详细的数据:
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
。
您可以从右侧的每个值 (/:
) 中删除最后一个字符 (-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
如果您使用的是 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 的建议进行操作。