DATA Step, Macro, Functions and more

difference between dates

Reply
Regular Contributor
Posts: 196

difference between dates

Typically cupa_dt is greater than start_dt. However, when start_dt is greater than cupa_dt I need to switch around start_dt and cupa_dt to get the correct difference between the two dates. Is there any way to accomplish this without creating a flag (ie cc_check)?

cupa_dt=dhms(TDT,0,0,TTM);

start_dt=dhms(CSDAT,0,0,CSTIM);

cc_check=0;

if (start_dt>cupa_dt and cupa_dt ne .) then cc_check=1;

if(cc_check=0) then do;
cc_diff=round(((cupa_dt-start_dt)/86400),0.01);
end;

if(cc_check=1) then do;
cc_diff=round(((start_dt-cupa_dt)/86400),0.01);
end;

Thank you.

Trusted Advisor
Posts: 1,204

Re: difference between dates

Just add abs function


cc_diff=round(((abs(cupa_dt-start_dt))/86400),0.01);

Valued Guide
Posts: 2,174

Re: difference between dates

although you have one solution, here is another

difference = range( date1, date2 ) ;

Here is some code to demo the result .

data ;

do date1 =  today() - 3 to today()+2, . ;

do date2 =  today() - 3 to today()+2, . ;

  diff= range( date1,date2) ;

  output ;

end; end;

stop;

format date: date. ;

run ;

Ask a Question
Discussion stats
  • 2 replies
  • 272 views
  • 0 likes
  • 3 in conversation