在SAS中使用今天的日期创建文件名。

时间:2018-03-27 19:14:49

标签: sas

我希望能够在今天的日期保存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”

我想文件名在名称中没有所有这些空格。关于如何做到这一点的任何想法?

3 个答案:

答案 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;