1

我有一个 csv 文件,其中包含包含日期的四列。

StartDate, EndDate, ActionDate, MaturityDate 18/01/2013, 18-01-2013, 18-01-2013 07:59 PM, 18-01-2013 19:59

我将其加载到一个表中:

myTable:("DDDD";enlist ",") 0: `$":/home/myuser/test.csv"

我的表头没问题,但日期是空白的。我认为这是因为 Q 只理解 yyyy.mm.dd 不幸的是我无法控制 csv 文件的格式。在将其加载到 kdb 之前,我可以使用 python 脚本重新格式化它,但这是最好的方法吗?我可以在 Q 中以某种方式做到这一点并让它将这些字符串理解为日期吗?

谢谢

4

1 回答 1

1

正如您在评论中回避的那样,问题不在于 q 无法解析由“/”分隔的日期,问题在于日期的格式为日期/月,而不是月/日。当使用正确的日期格式 (\z 0) 将适用于上面的 3 列,尽管它会因非 24 小时时钟时间 (.ie AM/PM) 而下降。

如果每一列都是一致的,如始终是月/日或日期/月,那么您可以通过临时设置 \z 添加一些逻辑来正确解析。您需要提前知道日期列的格式并进行相应的解析。您可以添加逻辑来尝试找出日期列的格式,但很有可能会遇到一些问题。

对于上午/下午时间,您可以删除后缀。如果您确实想要日期时间,则可以使用“Z”来解析并在时间为 PM 时添加 12:00:00。

于 2014-02-19T14:35:39.460 回答