You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将毫秒级Unix时间戳转换为KDB原生时间戳?

KDB毫秒级Unix时间戳转原生时间戳方法

KDB的原生timestamp类型(格式符"P")是以2000年1月1日00:00:00为基准的纳秒数,而Unix时间戳是以1970年1月1日00:00:00为基准的毫秒数,直接用字符串转换会失败,因为"P"格式符无法解析Unix时间戳字符串。以下是两种实用的转换方法:

方法一:通过datetime中转

先将毫秒级时间戳转为Unix秒数,用"U"格式符转成datetime类型,再转成timestamp:

q)msTs:1673240400000
q)"P"$"U"$msTs%1000
2023.01.09D11:00:00.000000000

方法二:直接计算纳秒偏移

先把毫秒转成纳秒,再加上1970到2000的基准偏移量(固定为946684800000000000纳秒,等于long$"P"$0-"U"$0),结果直接是timestamp类型:

q)msTs:1673240400000
q)(msTs*1000000)+946684800000000000
2023.01.09D11:00:00.000000000

错误写法原因

你之前尝试的"P"$ string (1673240400000 % 1000)之所以失败,是因为"P"格式符仅能解析"YYYY.MM.DDDD:HH:MM:SS.NNNNNNNNN"格式的字符串,无法识别Unix秒数字符串。

内容的提问来源于stack exchange,提问作者cjm2671

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:40:01