SAS如何将宏变量用作日期
SAS how to use a macro variable as a date
我有一个来自另一个宏的全局宏变量,它看起来像
'01jan2014' 在日志中打印时
即有强制引号
我想在 proc sql 语句中使用它,但我不能,因为它不喜欢变量类型。
如何在我的 proc sql 语句的 WHERE 子句中将其转换为日期?
要将日期字符串转换为 DDMONYYYY 格式,只需在末尾添加一个 d
。
'01jan2014'd
会将字符串转换为日期。
你的情况:
&var.d
将解析为
'01jan2014'd
这将被解释为日期。
%let yourdate = 01Feb2015;
%put &yourdate; /* resolve to 01Feb2015 */
proc sql;
select *
from have
where date ge "&yourdate."d;
或
%let yourdate2 = '01Feb2015'd;
proc sql;
select *
from have
where date ge &yourdate2;
我认为第一个更好,因为它不会在宏变量中包含 '
。
我有一个来自另一个宏的全局宏变量,它看起来像 '01jan2014' 在日志中打印时 即有强制引号
我想在 proc sql 语句中使用它,但我不能,因为它不喜欢变量类型。
如何在我的 proc sql 语句的 WHERE 子句中将其转换为日期?
要将日期字符串转换为 DDMONYYYY 格式,只需在末尾添加一个 d
。
'01jan2014'd
会将字符串转换为日期。
你的情况:
&var.d
将解析为
'01jan2014'd
这将被解释为日期。
%let yourdate = 01Feb2015;
%put &yourdate; /* resolve to 01Feb2015 */
proc sql;
select *
from have
where date ge "&yourdate."d;
或
%let yourdate2 = '01Feb2015'd;
proc sql;
select *
from have
where date ge &yourdate2;
我认为第一个更好,因为它不会在宏变量中包含 '
。