WHERE语句在SAS EG获取数据集的前一个月?



这实际上是我想在SAS EG中键入查询生成器的东西。我正在尝试过滤具有如下日期的数据集:

SEP2021
AUG2021
JUL2021
etc…

我试图使用查询生成器过滤它与WHERE语句。我希望表格中只显示上个月的结果。所以现在运行它应该会得到SEP2021,下个月运行它会得到OCT2021,等等…

我如何用WHERE语句做到这一点?

使用intnx()。假设所有的日期都从这个月的第一天开始:

where date = intnx('month', today(), -1, 'B');

如果没有:

where intnx('month', date, 0, 'B') = intnx('month', today(), -1, 'B');

您可以使用INTCK函数来计算两个日期之间的数字日历间隔。

的例子:

data have;
input datestring $; datalines;
SEP2021
AUG2021
JUL2021
run;
proc sql;
create table want as
select * from have
where intck('month',input(datestring,monyy7.),today()) = 1
;

这是来自SAS社区的KurtBremser的答案,这对我有用!我没有意识到我把字符值转换成了什么格式。PROC CONTENTS显示我的值是Numeric,格式为DTDATE9.

完整线程:https://communities.sas.com/t5/SAS-Enterprise-Guide/How-can-PROC-SQL-return-only-results-from-the-previous-month/m-p/774523

解决方案如下:

"所以它是一个datetime值,而不是一个日期。您需要使用DATEPART从中提取日期:

data have;
input date_column datetime19.;
format date_column dtdate9.;
datalines;
01sep2021:01:02:03
01oct2021:04:05:06
;
proc contents data=have;
run;
proc sql;
select *
from have
where datepart(date_column) = intnx('month',today(),-1,'b');
quit;

部分结果:

#   Variable    Typ Länge   Ausg.Format
1   date_column Num 8   DTDATE9.
date_column
01SEP2021

"

相关内容

  • 没有找到相关文章

最新更新