Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 全局SAS变量定义内的日期到字符串转换_String_Date_Sas - Fatal编程技术网

String 全局SAS变量定义内的日期到字符串转换

String 全局SAS变量定义内的日期到字符串转换,string,date,sas,String,Date,Sas,我的目标是在一个全局SAS变量中连接一个长目录字符串,而不使用额外的数据步骤。我有以下代码: %let deadline='31Dec2019'd; %let rootDir=Y:\PD; %let timestamp=input(&deadline.,yymmdd8.); %let PATH=&rootDir\currentStats\&timestamp.; %put &PATH.--; 这给了我一个让我困惑的错误: 检测到开放代码语句递归 我还尝试了%in

我的目标是在一个全局SAS变量中连接一个长目录字符串,而不使用额外的数据步骤。我有以下代码:

%let deadline='31Dec2019'd;
%let rootDir=Y:\PD;
%let timestamp=input(&deadline.,yymmdd8.);
%let PATH=&rootDir\currentStats\&timestamp.;
%put &PATH.--;
这给了我一个让我困惑的错误:

检测到开放代码语句递归

我还尝试了
%input
%put
put
而不是
input
,但总是出现相同的错误。我对SAS还不是很流利,所以请原谅我这个不切实际的问题,但我在网络上找不到任何有效的解决方案,而且似乎在这里也还没有找到

无法解决我的问题的资源:

      • 将日期文字源代码段作为日期值进行评估
      • 使用格式
        B8601DA8.
        将日期值呈现为yyyymmdd
      SAS宏可以通过
      %sysfunc
      宏函数使用基本函数

      语法是

      %let result = %sysfunc ( <function-name> ( <arg-1>, ... ) );
      
      文件名的实际部分可能有不同的日期表示形式。以下是一些可能性:

      /*  date representation construct according to ----> format */
      %put yymmdd   : %sysfunc(putn(&deadline,  yymmdd6.));
      %put yy-mm-dd : %sysfunc(putn(&deadline,  yymmdd8.));
      %put yyyymmdd : %sysfunc(putn(&deadline,  B8601DA8.));
      %put yyyymmdd : %sysfunc(putn(&deadline,  YYMMDDN8.));
      
      ----- log -----
      
      yymmdd   : 191231
      yy-mm-dd : 19-12-31
      yyyymmdd : 20191231
      yyyymmdd : 20191231
      

      谢谢你快速而结论性的回答。只有一个后续问题:我必须在代码中更改什么才能将日期设置为
      yyyymmdd
      ?在
      %sysfunc()
      调用中不需要嵌套的
      %sysevalf()
      函数调用。
      /*  date representation construct according to ----> format */
      %put yymmdd   : %sysfunc(putn(&deadline,  yymmdd6.));
      %put yy-mm-dd : %sysfunc(putn(&deadline,  yymmdd8.));
      %put yyyymmdd : %sysfunc(putn(&deadline,  B8601DA8.));
      %put yyyymmdd : %sysfunc(putn(&deadline,  YYMMDDN8.));
      
      ----- log -----
      
      yymmdd   : 191231
      yy-mm-dd : 19-12-31
      yyyymmdd : 20191231
      yyyymmdd : 20191231