【问题标题】:kdb Q date from string来自字符串的 kdb Q 日期
【发布时间】:2014-02-19 07:54:36
【问题描述】:

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

开始日期、结束日期、操作日期、成熟日期 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 中以某种方式做到这一点并让它将这些字符串理解为日期吗?

谢谢

【问题讨论】:

  • 我知道我可以使用 \z 1 \z 0 切换格式或使用 q -z 1 加载 q 会话,但我不想为所有内容切换它,只为选定的列。跨度>

标签: string date csv kdb q-lang


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多