Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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
Sql 使用日期宏的SAS连接运算符_Sql_Sas - Fatal编程技术网

Sql 使用日期宏的SAS连接运算符

Sql 使用日期宏的SAS连接运算符,sql,sas,Sql,Sas,我在一个日期提示中得到这两个宏: 日期(最小)为2014年1月1日,日期(最大)为 现在我需要把宏放在这个格式中 '01JAN2014' 我试过了 "'"||&datepromptest_min||"'" 但我明白了: "'"||01Jan2014||"'" 我知道| |可以处理普通变量,但对于¯os,这一步不起作用……有人知道吗?这里有一种方法: %let olddate = 01jan2014; %let newdate = %unquote(%quote(%'&

我在一个日期提示中得到这两个宏: 日期(最小)为2014年1月1日,日期(最大)为

现在我需要把宏放在这个格式中

'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提供的示例和解释…它很有效!