如何将日期列放入宏变量SAS

问题描述 投票:0回答:1

我有一个包含 2 个日期列的数据集。dataset1 中的日期列的格式类似于“01/01/2024”

我将它们都放入宏变量中,如下所示:-

%if &DateType. = date1 %then %do;

proc sql no print;
select date1 into: date separated by ', '
from dataset1;
quit;

%end;
%else %if &DateType. = date2 %then %do;

proc sql no print;
select date2into: date separated by ', '
from dataset1;
quit;
%end;

我想在where语句中使用这个宏变量:-

proc sql;
create table want as
select *
from dataset1
where &date. > '01Dec2028'd
;
quit;

但是,我在我的宏中不断收到“错误:语法错误,期望以下之一......”。我需要更改格式吗?

sas proc-sql
1个回答
0
投票

如果您的日期解析为多个日期,您将传递一个以逗号分隔的数字日期列表。换句话说,

&date
可能会解决:

proc sql;
create table want as
select *
from dataset1
where 23330,23331 > '01Dec2028'd
;
quit;

您需要从

dataset1
的表格中选择一个日期。您可以通过选择最大日期或最短日期来执行此操作。此外,如果
dataset1
中不存在有效日期,它还可能向其传递缺失值,因此您需要验证表中是否存在非缺失日期。例如:

proc sql no print;
select max(date1) into: date
from dataset1
where NOT missing(date1)
quit;

%if(&sqlobs = 0) %then %do;
    %put ERROR: No valid dates exist in DATASET1.;
    %abort;
%end;
© www.soinside.com 2019 - 2024. All rights reserved.