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

SAS中字符串转日期时宏变量赋值异常问题排查

错误原因

  • SAS 宏处理器的核心逻辑是文本替换,默认不会自动执行普通 SAS 数据步函数。你直接在 %let 赋值语句中写入 input('22Aug2020',date9.) 时,宏处理器只会把整段内容当做纯文本存入 date 宏变量,不会触发函数计算,所以打印时直接输出了函数文本。
  • 即使需要在宏环境下调用 SAS 内置函数,也需要使用 %sysfunc 宏函数包裹,且需要注意两个宏环境的特殊规则:
    1. 宏环境下的文本不需要加单/双引号包裹,引号会被识别为文本内容的一部分
    2. input 函数无法直接被 %sysfunc 调用,需要根据返回值类型使用对应的 inputn(返回数值)或 inputc(返回字符)函数

正确实现示例

示例1:获取SAS日期对应的数值存储值

%let date = %sysfunc(inputn(22Aug2020,date9.));
%put &date;

运行后输出:22159,即2020年8月22日对应的SAS日期数值。

示例2:直接获取格式化后的可读日期

%let date = %sysfunc(inputn(22Aug2020,date9.),yymmdd10.);
%put &date;

运行后输出:2020-08-22

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:57:00