data have;
infile cards dlm=',';
input id start_date : e8601dt23.3 end_date: e8601dt23.3 Task :$20. resource;
format start_date end_date datetime23.3;
cards;
537,2014-06-27 20:30:00.000,2014-06-28 08:30:00.000,Washing Machine,187
;
run;
data want;
set have;
do i=start_date to end_date ;
hour=hour(timepart(i));
lag_hour=lag(hour);
if hour ne lag_hour then do;
end_time=timepart(i);
total_time=(i-lag_i)/60;
if not missing(lag_hour) then output;
start_time=end_time;
lag_i=i;
date=datepart(i);
end;
end;
format start_time end_time time8. date yymmdd10. ;
drop i start_date end_date hour lag_hour lag_i ;
run;
... View more