DATDIF関数・YRDIF関数について
[OS] ALL
[リリース] 8.2
[キーワード] Base, DATA, FUNCTION, DATDIF, YRDIF
[質問]DATDIF関数およびYRDIF関数の使い方を教えてください。
[回答]DATDIF関数は開始日付から終了日付までの日数を計算するための関数です。
日数= DATDIF(開始SAS日付値,終了SAS日付値,表示形式) ; YRDIF関数は開始日付から終了日付までの年数を計算するための関数です。 年数= YRDIF(開始SAS日付値,終了SAS日付値,表示形式) ; 両関数とも3番目の引数「表示形式」には、年・月の扱いを変更するための設定値を指定します。
必ず、
プログラム例:DATDIF関数の処理 DATA _null_; sdate = '16oct78'd; edate = '16feb96'd; actual = DATDIF(sdate, edate, 'act/act'); days360 = DATDIF(sdate, edate, '30/360'); PUT actual= ; /* 実際の日数で計算*/ PUT days360= ; /* 1月を30日、1年を360日で計算*/ RUN ; 上記の処理結果 actual=6332 days360=6240 プログラム例:YRDIF関数の処理 DATA _NULL_; sdate = '16oct1998'd; edate = '16feb2003'd; /* 1月を30日、1年を360日で計算*/ y30360 = YRDIF(sdate, edate, '30/360'); /* 実際の日数で計算*/ yactact = YRDIF(sdate, edate, 'ACT/ACT'); /* 1年を360日で計算*/ yact360 = YRDIF(sdate, edate, 'ACT/360'); /* 1年を365日で計算*/ yact365 = YRDIF(sdate, edate, 'ACT/365'); PUT y30360= yactact= yact360= yact365= ; RUN ; 上記の処理結果 y30360 = 4.3333333333 yactact = 4.3369863014 yact360 = 4.4 yact365 = 4.3397260274
※YRDIF関数については、開始日付もしくは終了日付が閏年であり、かつ 表示形式が「ACT/ACT」の場合、期待した戻り値にならないという問題があります。詳細は下記URLの情報をご参照ください。
http://support.sas.com/kb/3/036.html |