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

在SAS Grid中导入Excel并添加文件最后修改时间至表时遇语法错误

问题解决:SAS宏中添加文件修改时间戳至表的语法错误

错误原因

宏变量&ModifyDT解析后是字符形式的时间戳(如09May2023:16:33:19),直接放入SELECT语句时,SAS会将其视为无效标识符而非字符串常量,因此触发语法错误。

解决方案

需要将宏变量值包裹为字符串常量,再通过INPUT()函数转换为SAS可识别的日期时间数值,并指定显示格式。

修改后的完整代码

%macro FileAttribs(filename);           
  %local rc fid fidc ModifyDT; 
  %let rc=%sysfunc(filename(onefile,&filename)); 
  %let fid=%sysfunc(fopen(&onefile));
  %if &fid ne 0 %then %do;      
    %let ModifyDT=%sysfunc(finfo(&fid,Last Modified));    
    %let fidc=%sysfunc(fclose(&fid));    
    %let rc=%sysfunc(filename(onefile));    
    %put NOTE- Last modified &modifydt;

    proc sql;
      create table work.final as
      select *, 
             input("&modifydt", datetime20.) as lastmodified format=datetime20.
      from work.tb; -- 从Excel导入的表
    quit;
  %end;
  %else %put &filename could not be open.;
%mend FileAttribs;

关键修改点说明

  1. 包裹宏变量为字符串常量:用双引号"&modifydt"将宏变量值包裹,让SAS识别为字符型输入。
  2. 转换为SAS日期时间数值:使用INPUT()函数,指定datetime20.格式(匹配DDMONYYYY:HH:MM:SS的时间戳格式),将字符转换为SAS内部的日期时间数值(以1960年1月1日为起点的秒数)。
  3. 指定显示格式:通过format=datetime20.确保新列lastmodified以可读的时间戳格式展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:45:20