如何使用数据格式 DDMMYYDw。在 Proc 导入 SAS MACRO

How can I use data format DDMMYYDw. in Proc Import SAS MACRO

所以我有这样的代码

%let fdate=%sysfunc(today());
%put %sysfunc(putn(&fdate,MMDDYYD10.));
%let ydate=%eval(&fdate-1);
%put %sysfunc(putn(&ydate,MMDDYYD10.));

而且它似乎有效

127  %let fdate=%sysfunc(today());
128  %put %sysfunc(putn(&fdate,MMDDYYD10.));
SYMBOLGEN:  Macro variable FDATE resolves to 22152
08-25-2020
129  %let ydate=%eval(&fdate-1);
SYMBOLGEN:  Macro variable FDATE resolves to 22152
130  %put %sysfunc(putn(&ydate,MMDDYYD10.));
SYMBOLGEN:  Macro variable YDATE resolves to 22151
08-24-2020

但是我是这样用的

proc import datafile = "S:csse_covid_19_daily_reports\&ydate..csv"
 out = T0824
 dbms = CSV
 REPLACE;

 GUESSINGROWS=100000;
 
run;

错误信息是这样显示的。

\csse_covid_19_daily_reports151.csv.
ERROR: Import unsuccessful.  See SAS Log for details.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE IMPORT used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds

他们转换回 22151。

我有这样一个文件

因此,要在 proc 导入中提取此文件,我需要类似 8-24-2020 的格式。这样我就可以将数据从 CSV 转换为 sas。

如何修复代码?

谢谢

您需要使用相同的变量。在您的测试中,您正在使用 %SYSFUNC() 但在您的代码中您没有使用,因此您实际上并没有在比较同一件事。

将您的代码更改为:

 "S:csse_covid_19_daily_reports\%sysfunc(putn(&ydate.,MMDDYYD10.)).csv"

或者更改要格式化的宏变量。如果您在多个位置使用它,请根据需要使用 %SYSFUNC() 来控制不同情况下的显示。