这是一个较大查询的一部分,用于创建一个包含一个月内观察结果的表,并使用该月作为表名。 我希望表名是一个明智的日期,而不是数字。
为什么这个%sysfunc(putc())函数不能创建字符串?
%macro transLiteralDate2Char(dateval=);
%put numerical = &dateval.;
%put sasdatavalue = %sysfunc(putc(&dateval,MONYY5.));
%mend;
%transLiteralDate2Char(dateval=%sysfunc(mdy(3,1,2016)));
答案 0 :(得分:1)
您还可以使用%SYSFUNC()
中的第二个参数%put %sysfunc(today(), date9.);
答案 1 :(得分:1)
SAS中的put
命令始终返回字符串。 %sysfunc(putc())
和%sysfunc(putn())
之间的区别是函数的第二个参数是什么类型的格式 - putc
理解字符格式,putn
理解数字格式。在这种情况下,由于日期格式是数字格式,您希望使用%sysfunc(putn())
来打印字符串。像这样:
%macro transLiteralDate2Char(dateval=);
%put sasdatavalue = %sysfunc(putn(&dateval,MONYY5.));
%mend;
%transLiteralDate2Char(dateval=%sysfunc(mdy(3,1,2016)));
查看示例here以获取更多信息。
答案 2 :(得分:0)
尝试putn而不是putc。 dateval是日期的数字表示。