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ヵ月後の日付を求めています。 |