如何使用%sysfunc获取上月月末日期?添加'E'参数无效
解决SAS宏获取上月月末日期的问题
你之前的代码无效是因为在宏函数%sysfunc中给intnx的对齐参数加了单引号,宏环境下不需要额外加引号,直接使用对齐标识即可。
正确的代码写法如下:
%let CLNA_EOM = %sysfunc(intnx(month, %sysfunc(date()), -1, E), yymmddn8.);
关键说明:
intnx函数的第四个参数用于指定日期对齐方式,大写的E是END的缩写,代表取目标月份的最后一天;- 宏函数中传递字符型参数时,单引号会被当作参数的一部分,导致
intnx无法正确识别对齐规则,这是你之前修改失败的核心原因; yymmddn8.格式确保输出为无分隔符的8位日期字符串(YYYYMMDD)。
你也可以使用完整的END参数,效果完全一致:
%let CLNA_EOM = %sysfunc(intnx(month, %sysfunc(date()), -1, END), yymmddn8.);
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

