SAS功能可过滤日期

时间:2014-05-19 17:28:26

标签: sas

我是SAS的初学者,一直在寻找如何使用函数从特定日期过滤数据集。我想过滤掉从去年12月1日到今天的数据。我可以通过下面的代码得到我需要的东西但是想尝试使用函数来获得相同的结果(如果可能的话)并且没有取得多大成功。感谢。

data getCurrYear;
set k;
if (year(rundt)= year(today())-1 and month(rundt) = 12 )or year(rundt) = year(today()) ;
run;

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是mdy功能。

if mdy(12,1,year(today())-1) le rundt;

我试图找到一种方法来使用intck来完成这项工作,这是我通常用于此类目的的功能,但我不会这样做#&#t} 39;可以使用这些规则(Dec 1,Y-1到Dec 31,Y)只使用一个函数调用。 12月1日至11月31日是可能的。

答案 1 :(得分:0)

使用intnx ...

N.B。当前日期为01DEC时,它将返回相同的日期。如果您需要之前的01DEC,只需在today()功能中将today()-1更改为intnx()

if intnx('year1.12',today(),0,'beginning') <= rundt <= today() ;

检查逻辑:

data check ;
  do dt = '01dec2012'd to '31dec2013'd by 12 ;
    from_dt = intnx('year1.12',dt,0,'beginning') ;
    output ;
  end ;

  format dt from_dt date9. ;
run ;

       dt      from_dt

01DEC2012    01DEC2012
13DEC2012    01DEC2012
25DEC2012    01DEC2012
06JAN2013    01DEC2012
18JAN2013    01DEC2012
30JAN2013    01DEC2012
11FEB2013    01DEC2012
23FEB2013    01DEC2012
07MAR2013    01DEC2012
19MAR2013    01DEC2012
31MAR2013    01DEC2012
12APR2013    01DEC2012
24APR2013    01DEC2012
06MAY2013    01DEC2012
18MAY2013    01DEC2012
30MAY2013    01DEC2012
11JUN2013    01DEC2012
23JUN2013    01DEC2012
05JUL2013    01DEC2012
17JUL2013    01DEC2012
29JUL2013    01DEC2012
10AUG2013    01DEC2012
22AUG2013    01DEC2012
03SEP2013    01DEC2012
15SEP2013    01DEC2012
27SEP2013    01DEC2012
09OCT2013    01DEC2012
21OCT2013    01DEC2012
02NOV2013    01DEC2012
14NOV2013    01DEC2012
26NOV2013    01DEC2012
08DEC2013    01DEC2013
20DEC2013    01DEC2013