Do you have two separate fields for date and time? If so you can follow the following logic
data sample;
date=mdy(7,23,2020);
time = hms(20,30,00);
output;
date=mdy(7,24,2020);
time = hms(20,30,00);
output;
date=mdy(7,24,2020);
time = hms(19,30,00);
output;
date=mdy(7,25,2020);
time = hms(19,30,00);
output;
date=mdy(7,26,2020);
time = hms(19,30,00);
output;
format date date9. time time8.;
run;
data _null_;
set sample;
if weekday(date)>=2 and weekday(date) <= 6 and hour(time) < 20 then do;
sla_end_date = date;
sla_end_time = time+7200;
end;
if weekday(date)>=2 and weekday(date) < 6 then do;
if time > hms(20,0,0) then ticker_time_remaining = 7200-22*60*60 + time ;
sla_end_date = date+1;
sla_end_time= hms(8,0,0) + ticker_time_remaining ;
end;
else if weekday(date) = 6 then do;
if time > hms(20,0,0) then do;
ticker_time_remaining = 7200-22*60*60 + time ;
sla_end_date = date+3;
sla_end_time= hms(8,0,0) + ticker_time_remaining ;
end;
else do;
sla_end_date = date;
sla_end_time = time+7200;
end;
end;
else if weekday(date) = 7 then do;
sla_end_date = date+2;
sla_end_time= hms(8,0,0) + 7200;
end;
else if weekday(date) = 1 then do;
sla_end_date = date+1;
sla_end_time= hms(8,0,0) + 7200 ;
end;
put date= date8. time=time8. sla_end_date =date8. sla_end_time= time8.;
run;
... View more