我想创建一个 SAS 宏,它以文字日期(例如'31may2011'd)作为参数。在宏内部,我想将其转换为 SAS 日期值(例如 18778)。
%macro transLiteralDate2Value(literal=);
%put literal = &literal.;
%put sasdatavalue = ???; /* how to calculate this value ? */
%mend;
%transLiteralDate2Value(literal='31may2011'd);
是优雅的方式来实现这一目标吗?当然,我可以通过解析文字字符串来做到这一点,但我认为必须有更好的方法。
我使用 SAS 9.1.3
最佳答案
您可以使用 %sysfunc 宏函数来完成。
%macro transLiteralDate2Value(literal=);
%put literal = &literal.;
%put sasdatavalue = %sysfunc(putn(&literal.,8.));
%mend;
%transLiteralDate2Value(literal='31may2011'd);
关于sas - 将文字日期参数转换为宏中的 SAS 日期值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5741131/