我正在尝试根据日期过滤器过滤数据。我表中的日期列是date9。格式(30JUN2017)。
我想通过从现有日期减去6个月(即31DEC2017)来过滤日期列。
例如:日期< 31DEC2017
无论如何可以建议如何做到这一点,我也尝试过使用intx函数和其他选项。
感谢您的帮助。
最诚挚的问候, AJ
答案 0 :(得分:0)
使用格式化的值在SAS中操作日期时,您应将其括在""d
中,即在您的示例中,它应为where date<"31DEC2017"d
。如果您的日期以date9格式存储为字符串,则可以将其设置为如下日期:where input(date,date9.)<"31DEC2017"d
现在你的问题似乎与其标题略有不同。根据后者,您希望过滤max_date - 6个月,无论数据集中的最大日期是什么。这可以这样做:
proc sql;
select *
from t
where intnx('month',date,6)<(select max(date) from t)
;
quit;
但是,出于某种奇怪的原因,通过&#34; max date&#34;你的意思是当前的日期,上面的查询只是变成了这个:
proc sql;
select *
from t
where intnx('month',date,6)<date()
;
quit;