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

如何在KDB Q中解析CSV文件内的ISO8601格式datetime时间戳

KDB/Q解析ISO8601格式时间戳的操作方法

你可以选择读取时直接转换,或者读取完成后单独转换时间列,两种方式的操作如下:

方式1:读取文件时直接解析为时间类型

你当前的读取代码中,用"S"将时间列识别为字符串类型,只需把对应位置的S替换为kdb时间类型标识即可:
带时区后缀Z的ISO8601时间戳可以直接用"P"(timestamp,纳秒精度)或者"Z"(datetime)识别,kdb会自动匹配格式
示例代码:

f: `:/home/chris/sync/us_equities/AAPL.csv
// 把首字段的S替换为P,读取后t列直接是timestamp类型
data: flip `t`o`h`l`c`v!("PFFFFI";",")0: f

如果只需要保留分钟级精度,也可以直接用"m"替换S,一步得到minute类型的时间列。

方式2:已读取数据的情况下转换时间列

如果你已经将数据读取为字符串列存储,可以用类型转换符直接对整列做转换:

// 假设已读入的表存在变量data中
data: update t: "P"$t from data

如果需要转为其他时间粒度,可按需选择目标类型:

  • 转日期:update t: "D"$t from data
  • 转分钟:update t: "m"$t from data
  • 转datetime:update t: "z"$t from data

类型验证

执行meta data即可查看表的列类型,确认t列已经从字符串/symbol类型转为目标时间类型即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:15:07