SAS 全局日期比较

标签 sas

我正在尝试进行日期比较,但没有得到正确的结果。有谁知道这是怎么回事吗?

%macro ttt;
    %let check_start = 28APR2014;
    %if "&check_start."d < "25may2014"d %then %let true = 1;
    %else %if "&check_start."d > "25may2014"d %then %let true = 2;
    %put &true;
%mend;
%ttt;

14         %macro ttt;
15          %let check_start = 28APR2010;
16          %if "&check_start."d < "25may2014"d %then %let true = 1;
17          %else %if "&check_start."d > "25may2014"d %then %let true = 2;
18          %put &true;
19          %mend;
20          %ttt;
true = 2

宏变量 true 应该等于 1

最佳答案

在这种情况下,您需要使用 %sysevalf() 来评估比较。以下作品。

%macro ttt;
    %let check_start = 28APR2015;
    %if %sysevalf("&check_start"d < '25may2014'd) %then %let true=1;
    %else %if %sysevalf("&check_start."d > '25may2014'd) %then %let true=2;
    %put &true.;
%mend;
%ttt;

关于SAS 全局日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932269/

相关文章:

sas - 确定服务器上下文(工作区服务器与存储进程服务器)

Sublime 中的 SAS 语法高亮

format - SAS 中的 Bestw.d 格式语法

python - 合并 2 个具有多个变量的数据集(不能仅使用相似的变量)

sas - 这在数据步骤中意味着什么?

linux - 在 sas 文件名管道中未解析宏的明显调用

sas - 为什么我在这个简单的查询中收到错误 : ERROR: The value 02 is not a valid SAS name.

sas - 如何在 SAS 中连接一个观察中的每条记录

sas - 在带有文本的 sas 中使用 <> 运算符表示不等于

SAS:如果观察值与另一个数据集中的观察值匹配,则从数据集中删除观察值