SAS EG 中用于获取数据集前一个月的 WHERE 语句?
WHERE statement in SAS EG for getting the prior month of a dataset?
这实际上是我想在 SAS EG 的查询生成器中输入的内容。我正在尝试过滤具有如下日期的数据集:
SEP2021
AUG2021
JUL2021
etc…
我正在尝试使用查询生成器通过 WHERE 语句对其进行过滤。我希望 table 只有上个月的结果。所以 运行 现在应该给出 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 显示我的值是数字,格式为 DTDATE9。
解决方案如下:
“
所以它是一个日期时间值,而不是日期。您需要使用 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
“
这实际上是我想在 SAS EG 的查询生成器中输入的内容。我正在尝试过滤具有如下日期的数据集:
SEP2021
AUG2021
JUL2021
etc…
我正在尝试使用查询生成器通过 WHERE 语句对其进行过滤。我希望 table 只有上个月的结果。所以 运行 现在应该给出 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 显示我的值是数字,格式为 DTDATE9。
解决方案如下:
“ 所以它是一个日期时间值,而不是日期。您需要使用 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
“