2007年2月21日水曜日

INTNX関数のV9での拡張


INTNX関数は、


日付・日時・時間間隔で進めたり戻したりした値を返す関数です。



そのような関数ですが、V9で一部拡張されました。



例えば、来年同日の日付を求めたい場合、


V8では、



data _NULL_ ;


 * 今日の日付 ;


 today_this_year = put(today(),yymmdd10.) ;


 * 来年同日の日付 ;


 today_next_year = put(intnx("MONTH",today(),+12)+day(today())-1,yymmdd10.) ;


 put today_this_year = ;


 put today_next_year = ;


run ;



のように、INTNX関数の戻り値に対して日付部分の調整を別途加える必要があります。


(そのままだと、来年同月の1日が戻ります。)




V9では、以下のように拡張されました。



data _NULL_ ;


 * 今日の日付 ;


 today_this_year = put(today(),yymmdd10.) ;


 * 来年同日の日付 ;


 today_next_year = put(intnx("MONTH",today(),+12,"sameday"),yymmdd10.) ;


 put today_this_year = ;


 put today_next_year = ;


run ;



第4引数にsamedayを渡すことで、来年同日の日付が返されます。



実行結果は以下のとおりです。


 <V9での結果>


 f:id:n-insight:20070220155421j:image



ちなみに、V8での実行結果は


 <V8での結果>


 f:id:n-insight:20070220155348j:image


のようになり、第4引数"sameday"を解釈してくれません。


(※V8でも第4引数を指定することは可能です。ただし、"sameday"が有効な引数として認められません。)



SASのTechnical Supportのページでも解説されています。


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


V8 Technical Support:nヶ月先の同日日付を取得する方法


0 件のコメント:

コメントを投稿

ネイチャーインサイト サイトリニューアル&NIBLOGの引っ越し

ご連絡が遅くなりましたが、 ネイチャーインサイトの際とがリニューアルしました。 https://www.n-insight.co.jp/ それに伴い、NIBLOGも引っ越しすることになりました。 https://www.n-insight.co.jp/niblog/ ...