SAS如何使用宏变量作为日期

she*_*ode 3 sas sas-macro

我有一个来自另一个宏的全局宏变量,当你在日志中打印时看起来像'01jan2014',即有强制引号

我想在proc sql语句中使用它,但我不能因为它不喜欢变量类型.

如何将其转换为proc sql语句的WHERE子句中的日期?

Lov*_*ust 6

%let yourdate = 01Feb2015;
%put &yourdate; /* resolve to 01Feb2015 */

proc sql;
select *
from have
where date ge "&yourdate."d;
Run Code Online (Sandbox Code Playgroud)

要么

%let yourdate2 = '01Feb2015'd;

proc sql;
select *
from have 
where date ge &yourdate2;
Run Code Online (Sandbox Code Playgroud)

我认为第一个更好,因为它不会包含'在宏变量中.


Dom*_*azz 5

要以DDMONYYYY格式转换日期字符串,只需d在末尾添加一个.

'01jan2014'd
Run Code Online (Sandbox Code Playgroud)

将字符串转换为日期.

在你的情况下:

&var.d
Run Code Online (Sandbox Code Playgroud)

将解决

'01jan2014'd
Run Code Online (Sandbox Code Playgroud)

这将被解释为日期.