nヶ月先の同日日付を取得する方法(SAS 9.1以降)

[OS] ALL
[リリース] SAS 9.1以降
[キーワード] Base, date, Increments, same date, function, INTNX

[質問]

INTNX関数を使ってnヶ月先の月初日、中間日、月末日を求められますが、同日の日付を求めるにはどのようにすればよいでしょうか。

元の日付 求めたい日付
2005/12/24 2006/01/24
2006/01/31 2006/02/28
(該当する日がない場合は月末)
2006/02/28 2006/03/28

[回答]

SAS 9.1から、INTNX関数のアラインメントに、カレンダー上の同日日付を求める「SAMEDAY」が追加されました。
このアラインメントを使用して、nヶ月先の同日日付を求められます。

使用例


  DATA sample;
    INPUT st_date  yymmdd10.;  
    FORMAT st_date yymmdds10.;
  CARDS; 
  2005/12/24 
  2006/01/31
  2006/02/28
  ;
  RUN;

  DATA results;
    SET sample; 
    FORMAT date_m1 yymmdds10.;
    date_m1 = INTNX('month',st_date,1,'sameday');
  RUN; 

INTNX 関数の詳細

INTNX関数は、指定した時間だけSAS日付値、SAS時間値、およびSAS日時値を進めた値を返します。

構文

  INTNX('interval',start-from,increment<,'alignment'>)

引数
interval 時間の単位間隔を文字定数または文字変数で指定する
start-from 期間の開始値をSAS日付値、SAS時間値、およびSAS日時値を、SAS式のいずれかで指定する
increment 進める時間間隔数を負または正の整数で指定する
'alignment' 次のいずれかの値から1つを指定する
BEGINNING単位間隔の開始点を返す
MIDDLE単位間隔の中間点を返す
END単位間隔の終了点を返す
SAMEDAY増分間隔に対応したカレンダーデートでの日付を返す(SAS 9.1より追加)

なお、SAS System 8以前のリリースをご利用の場合は、下記のFAQを参照してください。