如何将任意 unix 时间戳解析为 kdb 中的日期时间?

How does one parse an arbitrary unix timestamp to a datetime in kdb?

我正在尝试将 unix 时间戳,即 1618876798363946752(~2021 年 4 月)转换为 kdb/q 中相应的日期时间。我尝试使用以下功能。 (根据 this

q)dt:{`datetime$(1970.01.01+0D00:00:00.001 * `long$x)};

然而它产生了错误的结果:

q)dt 1618876798363946752
2254.09.24T08:41:10.211

在 kdb+ 中将任意长度的 Unix 时间戳转换为其关联的 datetime 的一般经验法则和相关方法是什么?

感谢您的建议。 最好的问候

我稍微调整了@terrylynch 的答案 here 以考虑时间戳的完整精度。

q)`datetime70.01.01+0D00:00:00.000000001*1618876798363946752
2021.04.19T23:59:58.363

只是添加另一种转换方式:

q)`timestamp18876798363946752 + `long70.01.01D
2021.04.19D23:59:58.363946752

函数可以是

q)dt: {`timestamp$x + `long70.01.01D}
q)dt 1618876798363946752
2021.04.19D23:59:58.363946752