首页 > 解决方案 > 在 KDB 中将时间戳列转换为 Python 日期时间格式

问题描述

我有一个KDB 格式的tbl列的表,看起来像. 我想将它转换成这样的 Python 日期时间格式,但我在使用该命令时遇到了问题。datetimetimestamp2014.11.22D17:43:40.1234567892014-11-22 17:43:40.123456789update

我知道我可以这样做来转换时间戳:

q)`year`dd`mm`hh`uu`ss$2015.10.28D03:55:58 // this gives 2015 28 10 3 55 58i

而且我知道我可以通过将其作为字符串读取然后在这种情况下将其转换为整数datetime2来创建一个新列:datetime

q)update datetime2:"I"$string datetime from tbl

但我很难同时投射和更新:

q)update datetime2:`year-`dd-`mm `hh:`uu:`ss$datetime from tbl

我得到的错误是:

evaluation error:

length

  [0]  update datetime2:`year-`dd-`mm `hh:`uu:`ss$datetime from tbl
                                                 ^

谁能指出我正确的方向?谢谢你。

标签: pythondatetimekdb

解决方案


Kdb 没有显示时间戳的替代方法,获得所需内容的唯一方法是将时间戳串起来并操作各个字符。就像是:

q)tbl:([]datetime:5#2014.11.22D17:43:40.123456789)
q)update{" "sv'(ssr[;".";"-"];::)@'/:"D"vs'string x}datetime from tbl
datetime
-------------------------------
"2014-11-22 17:43:40.123456789"
"2014-11-22 17:43:40.123456789"
"2014-11-22 17:43:40.123456789"
"2014-11-22 17:43:40.123456789"
"2014-11-22 17:43:40.123456789"

这纯粹是装饰性的,这些时间戳在时间序列意义上将无法使用,但也许它们适合您的目的。

你最终要解决什么问题?如果您尝试将数据传递给 python,则最好使用基础数值并将数值转换回 python 端的时间戳。


推荐阅读