nヶ月先の同日日付を取得する方法
[OS] ALL
[リリース] ALL
[キーワード] date, INTNX, same date
[質問]「2004/12/25」から「2005/01/25」、また「2004/12/02」から「2005/02/02」など、基準となる日付からnヵ月後の同日の日付を求めるにはどうしたらよいでしょうか。
[回答]
SAS日付を年月の単位で移動させる関数には、INTNX関数があります。
ただしINTNX関数は、デフォルトではnヵ月後の月の初日を返します。
したがって、nヵ月後の同日日付を求めるには少し工夫が必要になります。
/* サンプルデータ作成 */
DATA days;
INPUT hizuke YYMMDD10.;
CARDS;
2004/01/01
2000/02/29
2003/02/28
2004/12/02
2004/12/25
;
/* 1ヵ月後の日付計算 */
DATA temp;
SET days;
daydiff = DAY(hizuke)-1;
monthafter = INTNX('MONTH', hizuke, 1) + daydiff;
FORMAT hizuke YYMMDD8.
monthafter YYMMDD8.;
RUN;
上記のプログラムでは、与えられた基準日付 hizukeがその月の1日から何日後であるかを求め、daydiffに格納します。hizuke が2004年11月26日ならば、daydiffは25となります。
ここで、「1ヵ月後の日付 = 1ヵ月後の月初 + daydiff」と考えられますので、INTNX関数を使用して1ヵ月後の日付を求めています。 |
|||||||||