DS2関数(日付と時間)
- 「月, 日, 年」をそれぞれ引数で受け取り、SAS日付値に変換する
- SAS日時値からSAS日付値を取得する
- 現在の日時を取得する
- SAS日時値から、日付や時間を加減算する
- 2つのSAS日時値の間隔を取得する
「月, 日, 年」をそれぞれ引数で受け取り、SAS日付値に変換する
MDY関数
date_val = mdy(mm, dd, yy);
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ds2ref/n15zqld58pd186n1djkzia6oprza.htm
SAS日時値からSAS日付値を取得する
DATEPART関数
sas_date = DATEPART(sas_datetime);
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ds2ref/n16yabgpgl3slnn1uh9ipw6qlrdo.htm
現在の日時を取得する
DATETIME関数
sas_datetime = DATETIME();
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ds2ref/p037ecmn1cv535n1op7wm4qnza7a.htm
SAS日時値から、日付や時間を加減算する
INTNX関数
INTNX(interval, target_value, increment)
/* 使用例 */
dcl double date_after6week having format yymmdds10.;
input_date = inputn('20250831', 'yymmdd8.');
date_after6week = intnx('week', input_date, 6); /* 6週間後の日付を取得する */
put date_after6week=; /* "2025/10/12"が出力される */
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ds2ref/n1mtvizfg1y0g9n1wslqgjxseh0i.htm
2つのSAS日時値の間隔を取得する
INTCK関数
INTCK(interval, startDate, endDate, <任意>method)
proc ds2;
data _null_;
method run();
dcl double startDate endDate mon day;
startDate = inputn('2023/12/11', 'yymmdd10.');
endDate = inputn('2025/12/01', 'yymmdd10.');
mon = INTCK('MONTH', startDate, endDate, 'CONTINUOUS');
put mon=;
day = INTCK('DAY', startDate, endDate, 'CONTINUOUS');
put day=;
end;
enddata;
run;
quit;
interval
| 計算単位 | 指定する文字列 |
|---|---|
| 日 | DAY |
| 週 | WEEK |
| 月 | MONTH |
| 四半期 | QTR |
| 年 | YEAR |
| 秒 | SECOND |
| 分 | MINUTE |
| 時 | HOUR |
method
| 指定する文字列 | 内容 |
|---|---|
| CONTINUOUS, C, CONT | 連続した期間を測定単位に指定します。 |
| DISCRETE, D, DISC | 連続しない期間を測定の単位に指定します。DISCRETEメソッドは、間隔の境界(月末など)を数えます。 |
https://documentation.sas.com/doc/ja/pgmsascdc/v_061/ds2ref/n096g3nwx05g7wn161ax2rdqmlfn.htm