kdb + / q:如何将utc时间戳转换为日期时间?

时间:2020-07-26 18:42:31

标签: kdb

如何将以下时间戳t:1595779091979转换为等效的`datetime $()表示形式(UTC)?

例如,如果有人尝试使用以下内容这样做。

q) `datetime$t
    0000.00.00T00:00:00.000

q) `timestamp$t
    2000.01.01D00:26:35.779091979

(两者都不正确,时间应为2020.07.26D ...)

谢谢

1 个答案:

答案 0 :(得分:3)

时间戳1595779091979看起来像是1970年以来的毫秒数。如果您删除了千禧年-转换很简单

 q)1970.01.01+0D00:00:01*1595779091
2020.07.26D15:58:11.000000000

或保持千分之一秒

 q)1970.01.01+0D00:00:00.001*1595779091979
2020.07.26D15:58:11.979000000

最后,您可以将以下定义添加到实用程序库中

ts:1970.01.01+0D00:00:00.001*

并在需要转换时在代码中使用它

 q)ts 1595779091979
2020.07.26D15:58:11.979000000

更新:可以将简短的解决方案写为

ts:1970.01.01D+1000000*