SAS导出日期格式

时间:2016-01-26 09:08:18

标签: sas

您好我正在尝试从一个日期文件夹导入数据(成功),因此文件路径读取/年/月/日(*今天的日期)

然后我调整了一些数据(再次成功)。完成后,我想将它导出到我从中取出它的文件夹前29天的文件夹。

这是我当前的宏:

%LET TODAY = %SYSFUNC(TODAY());
%PUT &TODAY;
%LET TODAYA = %SYSFUNC(PUTN(&TODAY,DDMMYYn8.));
%PUT &TODAYA;
%LET TWENTYNINE = %SYSFUNC(PUTN(&TODAY.+29,DDMMYYn8.)); 
%PUT &TWENTYNINE;
%LET T_DATE = %SYSFUNC(PUTN(&TODAY,DDMMYYn8..));
%LET T_YEAR = %SYSFUNC(YEAR(&TODAY));
%LET T_MONTH = %SYSFUNC(MONTH(&TODAY));
%LET P_DATE = %SYSFUNC(PUTN(&TWENTYNINE,DDMMYYn8..));
**%PUT &P_DATE;
%LET P_YEAR = %SYSFUNC(YEAR(&P_DATE));
%LET P_MONTH = %SYSFUNC(MONTH(&P_DATE));**

P_Date显示错误:

  

错误:%SYSFUNC或%QSYSFUNC宏功能引用的参数1到函数MONTH不是          一个号码。   错误:%SYSCALL,%SYSFUNC或%QSYSFUNC参数列表中检测到的参数无效。执行          %SYSCALL语句或%SYSFUNC或%QSYSFUNC函数引用终止。

但我无法理解任何帮助会受到大力赞赏。

2 个答案:

答案 0 :(得分:0)

Imbricating%sysfunc' s很方便:

%LET P_YEAR = %SYSFUNC(YEAR(%SYSFUNC(TODAY())+29));
%LET P_MONTH = %SYSFUNC(MONTH(%SYSFUNC(TODAY())+29));
%PUT &P_YEAR &P_MONTH;

结果:

2016 2

修改

(首先尝试自己解决,但这里是一个完整的解决方案......)

data _null_;
  target = today() + 29;
  format target YYMMDDS10.;
  put target=;
  call symput("target", put(target, YYMMDDS10.));
run;
%put ⌖

2016/02/24

答案 1 :(得分:0)

如果要确定今天使用的源路径,请使用TODAY()功能。您可以应用YYMMDDS格式将其显示为YYYY / MM / DD。

%let frompath=%sysfunc(today(),yymmdds10);

如果要从源路径计算目标路径,则可以使用INPUTN()函数将其转换回日期,添加29并使用PUTN()函数将其转换回字符串。

%let topath=%sysfunc(putn(29+%sysfunc(inputn(&frompath,yymmdd10)),yymmdds10));