DS2関数(日付と時間)


「月, 日, 年」をそれぞれ引数で受け取り、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