Вы можете использовать функцию INTCK
, чтобы проверить, когда диапазон месяцев от текущей даты до даты активности равен нулю.
where INTCK('MONTH', today(), activity_date) = 0;
Альтернативой может быть использование макроса для 'code-gen''непосредственно between
баллов. Вам не нужен шаг данных для заполнения макропеременной, которая будет использоваться позже.
Пример:
data have;
do activity_date = today() - 365 to today() + 365;
output;
end;
format activity_date yymmdd10.;
run;
data want;
set have;
where intck('MONTH', today(), activity_date) = 0;
run;
data want;
set have;
where activity_date
between
%sysfunc(INTNX(MONTH, %sysfunc(today()), 0, B))
and
%sysfunc(INTNX(MONTH, %sysfunc(today()), 0, E))
;
run;