使用日期宏

时间:2018-04-09 12:11:25

标签: sql sas

我在日期提示符下获取这两个宏: date_min = 01Jan2014和date_max = .....

现在我需要将宏放在这种格式

'01JAN2014'

我用

尝试了
"'"||&datepromptest_min||"'"

但我明白了:

"'"||01Jan2014||"'"

我知道||使用正常变量,但使用&宏这个步骤不起作用......任何人都有想法吗?

2 个答案:

答案 0 :(得分:1)

这是因为首先执行与宏变量或宏相关的任何事情,然后执行其他所有操作。由于执行顺序,我们必须始终小心使用宏变量和任何其他代码。根据您的要求使用电话会议,如下所示。

 %let datepromptest_min = 01JAN2014;
 data _null_;
 call symput('datepromptest_min', "'"||"&datepromptest_min"||"'");
 run;

 %put value of &datepromptest_min;

在日志中显示为

value of '01JAN2014'

答案 1 :(得分:0)

以下是这样做的一种方式:

%let olddate = 01jan2014;
%let newdate = %unquote(%quote(%'&olddate%'));

%unquote删除%quote应用的所有宏引用,这反过来又允许您屏蔽单引号并解析它们之间的宏变量。如果不这样做,您可能会在下游代码中使用&newdate时发现意外行为。

如果双引号可以接受,您也可以这样做:

%let newdate = %sysfunc(quote(&olddate));