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

如何用KDB q查找文件创建日期并验证是否当日生成

KDB/Q 验证CSV文件是否当日创建(或修改)的优化方案

原实现思路

你通过调用system"ls -l"解析文件的时间字符串,对比月日判断是否当日创建,这种方法依赖ls的输出格式,存在跨系统兼容性问题,且字符串解析容易出错。以下是几种更简洁可靠的优化方案:


方案1:使用KDB内置函数获取文件修改时间(推荐)

KDB的.Q.fs函数可以直接获取文件的元数据,其中mtime字段对应文件的修改时间(即ls -l显示的时间),无需依赖外部命令解析:

// 获取文件状态字典
fileStats:.Q.fs`:path/testData.csv
// 提取修改时间并转为日期格式
fileDate:`date$fileStats`mtime
// 对比当日日期,返回1b(是)或0b(否)
isToday:fileDate = .z.d

方案2:获取文件创建时间(区分系统)

如果需要验证创建时间而非修改时间,需注意Unix系统的差异:

  • macOS:用stat -f %SB获取创建时间字符串,再转为KDB日期:
    createTimeStr:raze system"stat -f %SB /path/testData.csv"
    fileCreateDate:`date$"MMM dd yyyy"$createTimeStr
    isToday:fileCreateDate = .z.d
    
  • Linux:部分文件系统支持stat -c %w获取创建时间,格式处理类似:
    createTimeStr:raze system"stat -c %w /path/testData.csv"
    // 若输出包含时间,截取日期部分或直接转换
    fileCreateDate:`date$createTimeStr
    isToday:fileCreateDate = .z.d
    

方案3:直接用shell命令判断

借助find命令直接过滤当日文件,返回值0表示存在当日文件:

// 判断修改时间为当日
isToday:0~system"find /path/testData.csv -mtime 0"
// 判断创建时间为当日(Linux需文件系统支持)
isToday:0~system"find /path/testData.csv -ctime 0"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:12:13