我希望能够在今天的日期保存SAS文件。我在今天的日期创建文件路径时遇到了麻烦。
鉴于今天的当前日期是3/27/2018。我希望创建的文件路径是这样的:
“/ sasFolder / MyFileName的(2018年3月27日)的.xlsx”
我目前的代码是:
data _null_;
call symput('dateMonth', month(date()));
call symput('dateDay', day(date()));
call symput('dateYear', year(date()));
run;
%let filePath = "/sasFolder/MyFileName(&dateMonth.-&dateDay.-&dateYear.).xlsx";
data _null_;
put &filePath;
run;
目前我的输出是这个,_表示空格。
“/ sasFolder / MyFileName的(___________ 3 -__________ 26 -________ 2018)的.xlsx”
我想文件名在名称中没有所有这些空格。关于如何做到这一点的任何想法?
答案 0 :(得分:5)
如果没有使用%sysfunc()
的数据步骤,您可以非常轻松地执行此操作 - 这可以让您调用SAS函数并同时应用格式,例如:
%let filePath = "/sasFolder/MyFileName(%sysfunc(today(), mmddyyd10.)).xlsx";
%put &=filepath;
给出了:
FILEPATH =" / sasFolder / MyFileName的(2018年3月27日)的.xlsx"
答案 1 :(得分:2)
该日期样式已有格式。看起来您使用的是MMDDYYD10.
格式。您可以在数据步骤代码中使用它。
data _null_;
call symputx('datestamp', put(date(),mmddyyd10.));
run;
%let filePath="/sasFolder/MyFileName(&datestamp).xlsx";
或者跳过数据步骤并使用%sysfunc()
宏函数调用date()
函数并应用格式。
%let datestamp=%sysfunc(date(),mmddyyd10.);
你甚至可以消除额外的宏变量。
%let filePath="/sasFolder/MyFileName(%sysfunc(date(),mmddyyd10.)).xlsx";
请注意,我建议您切换为使用YYMMDD
格式而不是MMDDYY
格式。首先它会阻止你的英国朋友混淆12月10日和10月12日。其次,它将允许您的文件名按时间顺序排序。
答案 2 :(得分:0)
想出来。需要改变对同情的同意去除空间。
代码是:
data _null_;
call symputx('dateMonth', month(date()));
call symputx('dateDay', day(date()));
call symputx('dateYear', year(date()));
run;
%let filePath = "/sasFolder/MyFileName(&dateMonth.-&dateDay.-&dateYear.).xlsx";
data _null_;
put &filePath;
run;