使用今日';s在SAS的日期。

使用今日';s在SAS的日期。,sas,Sas,我想能够保存一个文件在SAS与今天的日期。创建具有今天日期的文件路径时遇到问题 鉴于当前日期为2018年3月27日。我希望创建的文件路径如下: “/sasFolder/MyFileName(3-27-2018).xlsx” 我目前的代码是: data _null_; call symput('dateMonth', month(date())); call symput('dateDay', day(date())); call symput('dateYear', year(date()));

我想能够保存一个文件在SAS与今天的日期。创建具有今天日期的文件路径时遇到问题

鉴于当前日期为2018年3月27日。我希望创建的文件路径如下:

“/sasFolder/MyFileName(3-27-2018).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;
目前我的输出是这个,用u表示空格

“/sasFolder/MyFileName(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu26-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu2018).xlsx”


我希望文件名中不要有所有这些额外的空格。有什么办法吗?

找到了。需要将symput更改为symputx以删除空格

代码是:

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;

使用
%sysfunc()
,无需数据步骤即可轻松完成此操作-这使您可以调用SAS函数并同时应用格式,例如:

%let filePath = "/sasFolder/MyFileName(%sysfunc(today(), mmddyyd10.)).xlsx";
%put &=filepath;
其中:

FILEPATH=“/sasFolder/MyFileName(03-27-2018).xlsx”


该日期样式已经有了格式。看起来您使用的是
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";

请注意,我建议您切换到使用
yymmd
格式,而不是
MMDDYY
格式。首先,它将防止你的英国朋友混淆12月10日和10月12日。其次,它将允许您的文件名按时间顺序排序。

好的,答案已更新!我从来都不懂那种格式。同意Tom的意见,YYYYMMDD更好。YYYYMMDD更好,因为如果您有多个同名但日期不同的文件,它将正确排序,您可以轻松找到第一个或最后一个文件。