如何在sas宏中将日期转换为字符串

时间:2017-10-18 22:00:20

标签: sas

这是一个较大查询的一部分,用于创建一个包含一个月内观察结果的表,并使用该月作为表名。 我希望表名是一个明智的日期,而不是数字。

为什么这个%sysfunc(putc())函数不能创建字符串?

%macro transLiteralDate2Char(dateval=);  
%put numerical = &dateval.;  
%put sasdatavalue = %sysfunc(putc(&dateval,MONYY5.));
%mend;
%transLiteralDate2Char(dateval=%sysfunc(mdy(3,1,2016)));

3 个答案:

答案 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是日期的数字表示。