I had to really manipulate the character string in the first date time column in the where clause, but I believe this works:
data have;
length incident_es $20 incident_ei $20;
gender='M'; age=30; incident_es='7/5/2019 1:07'; incident_ei='05JUL19:01:45:00'; output;
gender='M'; age=65; incident_es='7/7/2019 20:37'; incident_ei='07JUL19:21:14:00'; output;
gender='M'; age=25; incident_es='7/20/2019 23:01'; incident_ei='20JUL19:23:24:00'; output;
gender='F'; age=30; incident_es='8/10/2019 15:41'; incident_ei='10AUG19:16:34:00'; output;
gender='M'; age=64; incident_es='9/12/2019 17:50'; incident_ei='12SEP19:18:30:00'; output;
gender='M'; age=55; incident_es='7/29/2019 13:27'; incident_ei='29JUL19:14:10:00'; output;
gender='M'; age=39; incident_es='9/22/2019 0:46'; incident_ei='22SEP19:01:18:00'; output;
gender='F'; age=56; incident_es='9/1/2019 19:35'; incident_ei='01SEP19:20:00:00'; output;
gender='F'; age=56; incident_es='8/25/2019 0:06'; incident_ei='25AUG19:00:30:00'; output;
gender='F'; age=47; incident_es='7/12/2019 18:33'; incident_ei='12JUL19:18:52:00'; output;
gender='F'; age=41; incident_es='8/15/2019 0:37'; incident_ei='15AUG19:00:56:00'; output;
gender='F'; age=37; incident_es='7/28/2019 18:52'; incident_ei='28JUL19:19:15:00'; output;
gender='F'; age=37; incident_es='8/8/2019 12:08'; incident_ei='08AUG19:12:34:00'; output;
run;
proc sql;
select count(*) as count
from have
where abs(input(put(input(substr(incident_es,1,index(incident_es,' ')-1),mmddyy10.),date7.)||':'||substr(incident_es,index(incident_es,' ')+1),datetime.) - input(incident_ei,datetime.))/60/60 < 3;
quit;
I'm sure someone else can figure out a much cleaner way to get SAS to recognize the datetime values in the first column.
... View more