SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
gzr2mz39
Quartz | Level 8

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.

2 REPLIES 2
stat_sas
Ammonite | Level 13

Just add abs function


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

Peter_C
Rhodochrosite | Level 12

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 ;

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1250 views
  • 0 likes
  • 3 in conversation