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

为何SAS EG与SAS DI中FINFO函数返回的字符串格式不同?

为什么SAS EG和DI中finfo返回的文件修改时间格式不一样?

这是个非常典型的SAS跨环境差异问题,我来给你理清楚根源:

核心原因:系统区域设置(Locale)的差异

finfo函数获取的文件修改时间,本质上是直接调用了操作系统的文件系统API返回的结果,SAS只是把这个结果原封不动地返回给你。而不同环境下的系统区域设置,会让API返回的日期时间字符串格式完全不同:

  • SAS EG(Enterprise Guide):作为桌面客户端,它运行在你的本地Windows系统上,默认会采用Windows系统的区域设置。大多数桌面环境的区域设置会使用缩写月份名称(比如Jan、Feb),并且日期和时间之间用冒号分隔,所以返回的格式是12Jan2023:11:03:53。你之前用datetime20.转换报错,是因为datetime20.的标准格式是DDMMMYYYY HH:MM:SS(日期和时间用空格分隔),而EG返回的是冒号分隔,格式不匹配导致的。

  • SAS DI(Data Integration):DI通常是部署在服务器端运行的(不管是Windows Server还是Linux/Unix),服务器的区域设置一般会配置为使用完整月份名称(比如January、February),日期和时间之间用空格分隔,所以返回的格式是12 January 2023 11:03:28。这种格式和datetime.系列informat的兼容性更好,所以你在DI里转换不会报错。

通用解决方法(兼容两种格式)

如果想写一套代码在两个环境都能用,推荐使用SAS的anydtdtm. informat,它能自动识别绝大多数常见的日期时间格式:

moddate = input(finfo(fid,'Last Modified'), anydtdtm30.);
format moddate datetime20.;

这个informat会自动适配缩写/完整月份、不同的分隔符,不用单独针对EG或DI写分支代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:10:30