Sql 使用日期宏的SAS连接运算符
我在一个日期提示中得到这两个宏: 日期(最小)为2014年1月1日,日期(最大)为 现在我需要把宏放在这个格式中Sql 使用日期宏的SAS连接运算符,sql,sas,Sql,Sas,我在一个日期提示中得到这两个宏: 日期(最小)为2014年1月1日,日期(最大)为 现在我需要把宏放在这个格式中 '01JAN2014' 我试过了 "'"||&datepromptest_min||"'" 但我明白了: "'"||01Jan2014||"'" 我知道| |可以处理普通变量,但对于¯os,这一步不起作用……有人知道吗?这里有一种方法: %let olddate = 01jan2014; %let newdate = %unquote(%quote(%'&
'01JAN2014'
我试过了
"'"||&datepromptest_min||"'"
但我明白了:
"'"||01Jan2014||"'"
我知道| |可以处理普通变量,但对于¯os,这一步不起作用……有人知道吗?这里有一种方法:
%let olddate = 01jan2014;
%let newdate = %unquote(%quote(%'&olddate%'));
%unquote
删除由%quote
应用的任何宏引号,从而允许您屏蔽单引号并解析它们之间的宏变量。如果不这样做,您可能会在下游代码中使用&newdate
时注意到意外行为
如果可以接受双引号,您还可以执行以下操作:
%let newdate = %sysfunc(quote(&olddate));
这是因为与宏变量或宏相关的任何内容都是先执行的,其他所有内容都是稍后执行的。由于执行顺序的原因,在使用宏变量和任何其他代码时,我们必须始终小心。使用call symput满足您的需求,如下所示
%let datepromptest_min = 01JAN2014;
data _null_;
call symput('datepromptest_min', "'"||"&datepromptest_min"||"'");
run;
%put value of &datepromptest_min;
在日志中,它显示为
value of '01JAN2014'
非常感谢用户667489提供的示例和解释…它很有效!