我在从宏变量中减去日期时遇到问题。
目前,我通过运行创建一个宏变量:
%LET date = %SYSFUNC(TODAY(),MMDDYY10.);
我觉得我应该能够通过执行以下操作从 &date 中减去 1 天:
%LET newDate = %SYSFUNC(%INTNX('day',&date,-1),date9.);
但是,这会产生错误:
错误:%SYSFUNC 或 %QSYSFUNC 宏函数引用中缺少函数名称。
我需要 &newDate 的输出为 date9。
如有任何帮助,我们将不胜感激,谢谢!
最佳答案
快速回答:
%LET date = %SYSFUNC(TODAY());
%LET newDate = %SYSFUNC(INTNX(day,&date,-1),date9.);
%put &=newdate;
说明:
首先,最好删除 &date
中的格式,以确保将其正确解释为日期。您的原始代码(今天)在 intnx()
内解析为 12/06/2016,然后解析为 12 除以 6 除以 2016 - 等等。
其次,%sysfunc()
的内部函数应该是一个 datastep 函数 - 事实上,%sysfunc()
的全部目的是将这些函数带入 sas 。 %intnx()
不是宏函数,但如果是,那么根据定义,您不需要将其包装在 %sysfunc()
中。
最后,不应引用“day”参数 - sas 宏中的所有内容默认都被视为文本。
关于date - 从宏变量中减去日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40999876/