2つの日付、時間または日時の値の間にある指定した種類の間隔の境界数を返します。
カテゴリ: | 日付と時間 |
間隔名が含まれる文字定数、変数または式を指定します。Intervalは、大文字または小文字で表示できます。intervalに使用可能な値のリストについては、Intervals Used with Date and Time Functions (SAS言語リファレンス: 解説編)を参照してください。
間隔名の3つの部分は次のとおりです。
基本間隔の種類の名前を指定します。たとえば、YEARで年間隔を指定します。
乗数を指定します(省略可能)。基本タイプの間隔の期間に対する倍数と同等の間隔を設定します。たとえば、間隔YEAR2は2年の期間の間隔、つまり隔年です。
参照項目 | 乗数とシフト間隔を使用した日時の増分 |
SASデータセットによって定義されるユーザー定義間隔を指定します。各オブザベーションには、2つの変数beginとendが含まれます。
要件 | custom-interval変数を使用する場合は、INTERVALDSシステムオプションを使用する必要があります。 |
参照項目 | 詳細 |
シフトインデックスを指定します(省略可能)。間隔の開始時点を指定したサブ期間にシフトします。たとえば、YEAR.3で、各カレンダ年の3月1日に開始して翌年の2月末に終了するようにシフトされた年間隔を指定します。
制限事項 | シフトインデックスは、間隔全体のサブ期間の数以下にする必要があります。たとえば、2年間隔では25番目の月は存在しないため、YEAR2.24は使用できますがYEAR2.25はエラーになります。 |
デフォルトのシフト期間が間隔の種類と同じ場合、複数期間の間隔のみを任意のシフトインデックスでシフトできます。たとえば、MONTHの種類の間隔はデフォルトではMONTHのサブ期間でシフトします。そのため、シフトインデックスで月間隔はシフトできません。ただし、各MONTH2間隔には2つのMONTH間隔が含まれるため、シフトインデックスで2か月間隔をシフトできます。たとえば、間隔名MONTH2.2では、偶数月の1日目に開始する2か月の期間が指定されます。 | |
参照項目 | 乗数とシフト間隔を使用した日時の増分 |
開始SAS日付、時間または日時の値を表すSAS式を指定します。
終了SAS日付、時間または日時の値を表すSAS式を指定します。
DISCRETEメソッドとCONTINUOUSメソッドのどちらを使用して間隔を数えるかを指定します。
連続した期間を測定単位に指定します。間隔は開始日に基づいてシフトされます。
data b; WeddingDay='14feb2000'd; Today=today(); YearsMarried=intck('YEAR', WeddingDay, today(), 'C'); format WeddingDay Today date9.; run; proc print data=b; run;
別名 | CまたはCONT |
連続しない期間を測定の単位に指定します。DISCRETEメソッドは、間隔の境界(月末など)を数えます。
別名 | DまたはDISC |
デフォルト | DISCRETE |
は、2013年の第1四半期に相当します。 intck('qtr', '14JAN2013'd, '02SEP2013'd);end-date ('02SEP2013'd)は、2013年の第3四半期に相当します。間隔数(start-dateとend-dateの間に間隔の開始点が含まれる回数)は2です。
INTCK('MONTH', '1jan2013'd, '31jan2013'd)
では、2つの日付が同月内に存在するため、0を返します。
INTCK('MONTH', '31jan2013'd, '1feb2013’d)
では、2つの日付が1か月離れた別の月に存在するため、1を返します。
INTCK('MONTH', '1feb2013'd, '31jan2013'd)
では、1番目の日付が2番目の日付よりも1つ後の別の間隔内に存在するため、-1を返します。(1番目の日付が2番目の日付よりも後で、2つの日付が同じ間隔内に存在しない場合、INTCKは常に負の値を返します)。
data _null_; days=intck('dtday', '01aug2011:00:10:48'dt, '01feb2012:00:10:48'dt); put days=; run;
days=184
options intervalds=(interval=libref.dataset-name);
SASステートメント
|
結果
|
---|---|
qtr=intck('qtr', '10jan2013'd, '01jul2013'd); put qtr; |
2 |
year=intck('year', '31dec2012'd, '01jan2013'd); put year; |
1 |
year=intck('year', '01jan2013'd, '31dec2013'd); put year; |
0 |
semi=intck('semiyear', '01jan2010'd, '01jan2013'd); put semi; |
6 |
weekvar=intck('week2.2', '07jan2013'd, '01apr2013'd); put weekvar; |
7 |
wdvar=intck('weekday7w', '01jan2013'd, '01feb2013'd); put wdvar; |
27 |
y='year'; date1='01sep2003'd; date2='01sep2013'd; newyears=intck(y, date1, date2); put newyears; |
10 |
y=trim('year '); date1='1sep2005'd + 300; date2='1sep2013'd - 300; newyears=intck(y, date1, date2); put newyears; |
6 |
data a; interval='month'; start='14FEB2013'd; end='13MAR2013'd; months_default=intck(interval, start, end); months_discrete=intck(interval, start, end, 'd'); months_continuous=intck(interval, start, end, 'c'); output; end='14MAR2013'd; months_default=intck(interval, start, end); months_discrete=intck(interval, start, end, 'd'); months_continuous=intck(interval, start, end, 'c'); output; start='31JAN2013'd; end='01FEB2013'd; months_default=intck(interval, start, end); months_discrete=intck(interval, start, end, 'd'); months_continuous=intck(interval, start, end, 'c'); output; format start end date9.; run; proc print data=a; run;