2017-10-18 25 views
0

這是一個較大查詢的一部分,用於創建一個表,該表包含一個月內的觀察值並將該月用作表名。 我想表名是一個明智的看日期,而不是數字。如何從日期轉換爲sas宏中的字符串

爲什麼%sysfunc(putc())函數不會創建字符串?

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

嘗試putn而不是putc – Quentin

回答

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瞭解更多信息。

1

您也可以使用%SYSFUNC()

%put %sysfunc(today(), date9.); 
0

儘量putn代替putc將第二個參數。 dateval是日期的數字表示。

相關問題