将天数添加到 SAS 日期时间格式

Add a number of days to SAS datetime format

我需要有关 SAS 日期时间格式的帮助。 数据集(包括所需列 exp_dt):

    datetime            valid           exp_dt
4OCT2017:13.00.00         1         5OCT2017:13.00.00   
4OCT2017:15.20.00         7         11OCT2017:15.20.00
6OCT2017:08.00.00         30        5NOV2017:08.00.00

因此,我需要向日期时间添加有效值(天数)。 我刚开始使用 SAS Base,我不确定是否可以接受任何其他日期时间格式。 我试过这个,但不确定是否朝着正确的方向前进:

PlannedSchedTime = datetime ;
Postunit = 'DAY' ;
postval = valid ;
exp_dt = put(intnx(Postunit,PlannedSchedTime,postval,'same'),datetime20.);
put exp_dt= ;
run;

此外,我正在 SAS Enterprise Guide 中处理项目,所以也许有更简单的方法来完成 GUI 任务?

你绝对是在正确的道路上!因为您正在处理 datetime 值,所以将 DAY 替换为 dtDAY

如果您不希望 exp_dt 成为字符列,请不要使用 put 函数,而是使用格式(例如 format exp_dt2 datetime20.;)。

这里是一个代码示例,可以打印您想要的结果。与其他答案状态一样,DTDAY 将告诉 SAS 在基值为日期时间而不是日期时添加天数。

data datetimes;
    informat datetime anydtdtm. valid best12.;
    format datetime datetime20.;
    input datetime valid;
    cards;
4OCT2017:13.00.00 1
4OCT2017:15.20.00 7
6OCT2017:08.00.00 30
;
run;

data datetimes_added;
    set datetimes;
    format exp_dt datetime20.;
    exp_dt = intnx('DTDAY',datetime,valid,'SAME');
    put exp_dt = ;
run;