提问人:B K 提问时间:11/18/2023 更新时间:11/18/2023 访问量:31
如何将日期列放入宏变量 SAS 中
How to put date column into macro variable SAS
问:
我有一个包含 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;
但是,我不断收到“错误:语法错误,期待以下之一......”在我的宏中很有价值。我需要更改格式吗?
答:
2赞
Stu Sztukowski
11/18/2023
#1
如果您的日期解析为多个日期,您将传递一个以逗号分隔的数字日期列表。换言之,可以解决:&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;
评论
23350
'06DEC2023'd
select &datetype format=32. into :date trimmed from dataset1