前のページ|次のページ

INTFMT関数

推奨SAS出力形式を返します。この関数には、日付、時間または日時の間隔を指定します。

カテゴリ: 日付と時間

構文

必須引数

interval

WEEK、MONTHまたはQTRなどの間隔名が含まれる文字定数、変数または式を指定します。Intervalは、大文字または小文字で表示できます。intervalに使用可能な値のリストについては、Intervals Used with Date and Time Functions (SAS言語リファレンス: 解説編) (SAS言語リファレンス: 解説編)を参照してください。

より複雑な間隔を指定するには、基本間隔名に乗数とシフトインデックスを組み合わせて使用できます。間隔名の一般的な形式を次に示します。

interval<multiple.shift-index>

間隔名の3つの部分は次のとおりです。

interval

基本間隔の種類の名前を指定します。たとえば、YEARで年間隔を指定します。

multiple

乗数を指定します(省略可能)。基本タイプの間隔の期間に対する倍数と同等の間隔を設定します。たとえば、間隔YEAR2は2年の期間の間隔、つまり隔年です。

参照項目 乗数とシフト間隔を使用した日時の増分 詳細については、を参照してください。

shift-index

シフトインデックスを指定します(省略可能)。間隔の開始時点を指定したサブ期間にシフトします。たとえば、YEAR.3で、各カレンダ年の3月1日に開始して翌年の2月末に終了するようにシフトされた年間隔を指定します。

制限事項 シフトインデックスは、間隔全体のサブ期間の数以下にする必要があります。たとえば、2年間隔では25番目の月は存在しないため、YEAR2.24は使用できますがYEAR2.25はエラーになります。
デフォルトのシフト期間が間隔の種類と同じ場合、複数期間の間隔のみを任意のシフトインデックスでシフトできます。たとえば、MONTHの種類の間隔はデフォルトではMONTHのサブ期間でシフトされるため、シフトインデックスで月間隔をシフトできません。ただし、各MONTH2間隔には2つのMONTH間隔が含まれるため、シフトインデックスで2か月間隔をシフトできます。たとえば、間隔名MONTH2.2では、偶数月の1日目に開始する2か月の期間が指定されます。
参照項目 乗数とシフト間隔を使用した日時の増分 で詳細を参照してください。

'size'

LONGまたはSHORTを指定します。出力形式に年の値が含まれる場合、LONGまたはLでは4桁の年を使用する出力形式が指定されます。SHORTまたはSでは、2桁の年を使用する出力形式が指定されます。

詳細

INTFMT関数は、日付、時間または日時の間隔に応じて推奨出力形式を返し、指定した間隔の時系列に関連付けられた時間ID値を表示します。SIZEの有効な値(LONG、L、SHORT、Sのいずれか)によって、出力形式がSAS日付値を参照するときに2桁の年を使用するか4桁の年を使用するかを指定します。日付間隔と時間間隔の操作の詳細については、日付間隔と時間間隔 を参照してください。
INTFMT関数は、小売業界によるカレンダの間隔でも使用できます。これらの間隔はISO 8601に準拠します。これらの間隔のリストについては、Retail Calendar Intervals: ISO 8601 Compliant (SAS言語リファレンス: 解説編)を参照してください。

例1

SASステートメントとその結果を次に示します。
SASステートメント
結果
fmt1=intfmt('qtr', 's');
put fmt1;
YYQC4.
fmt2=intfmt('qtr', 'l');
put fmt2;
YYQC6.
fmt3=intfmt('month', 'l');
put fmt3;
MONYY7.
fmt4=intfmt('week', 'short');
put fmt4;
WEEKDATX15.
fmt5=intfmt('week3.2', 'l');
put fmt5;
WEEKDATX17.
fmt6=intfmt('day', 'long');
put fmt6;
DATE9.
var1='month2';
fmt7=intfmt(var1, 'long');
put fmt7;
MONYY7.

例2

INTFMT関数によって特定された出力形式を使用して、日付および日時値を文字列として表示することもできます。次の例では、INTFITでsashelp.citiwkデータセットとsashelp.airデータセットの間隔が特定されます。次に、INTFMTで、その間隔に基づく出力形式が特定されます。出力形式によって、各データセットの最初のSAS日付値が文字列に変換されます。START変数に、各データセットの最初のオブザベーションの日付が表示されます。この方法では、データセットの間隔が、最初の2オブザベーションの検証によって特定できると仮定されています。TIMESERIESプロシジャを使用すると、データセットの入力準備ができます。3つ以上のオブザベーションでは、DAY間隔とWEEKDAY間隔の差の特定が必要になる場合があります。この例は、DATE変数にSAS日時値が含まれる場合、変更が必要になります。
SAS言語リファレンス: 解説編 (各種幅オプションで生成された出力形式のバリエーションを含む)を参照してください。
data a(keep=date0 date interval fmt start);
   length start interval fmt $32;
   format date0 date date.;
   set sashelp.air(obs=2) sashelp.citiwk(obs=2);
   date = lag(date);
   if (mod(_n_,2) eq 1) then delete;
   if (mod(_n_,2) eq 0) then interval = intfit( date0, date, 'D' );
   if (mod(_n_,2) eq 0) then fmt = intfmt( interval, 'l' );
   start = putn( date0, fmt );
run;
proc print;
run;
SASでは、次の出力が作成されます。
DATEおよびDATETIME値を文字列として表示
DATEおよびDATETIME値を文字列として表示
前のページ|次のページ|ページの先頭へ