DATA Step, Macro, Functions and more

Concatenate Char to Formatted Date

Accepted Solution Solved
Reply
Contributor
Posts: 24
Accepted Solution

Concatenate Char to Formatted Date

Hi,

 

I'm having trouble keeping a date format when concatenating to a char.

 

i want to attach a char variable to yesterday's date, for example:

 

abc_20180416.

 

here is the code I made:

 

data temp0;

yest =today() -1; format yest yymmddn8.;

var1='abc_';

var2= cat(var1,yest);

run;

proc print data=temp0 (keep=yest var2);

run;

 

The result is:

 

yest                     var2

20180416            abc_21290;

 

I've tried a few different things, but can't seem to pin down how to get var2= abc_20180416.  

 

Any tips out there?

 

Thanks

 

 

 

 


Accepted Solutions
Solution
‎04-18-2018 08:05 AM
Super User
Posts: 6,628

Re: Concatenate Char to Formatted Date

Posted in reply to prolifious

Here's the statement that creates VAR2:

 

var2= cat(var1,yest);

 

Try it this way instead:

 

var2= cat(var1,put(yest, yymmddn8.));

View solution in original post


All Replies
Solution
‎04-18-2018 08:05 AM
Super User
Posts: 6,628

Re: Concatenate Char to Formatted Date

Posted in reply to prolifious

Here's the statement that creates VAR2:

 

var2= cat(var1,yest);

 

Try it this way instead:

 

var2= cat(var1,put(yest, yymmddn8.));

Contributor
Posts: 24

Re: Concatenate Char to Formatted Date

Posted in reply to Astounding

it works.  thank you very much for your help here!

Super User
Posts: 9,880

Re: Concatenate Char to Formatted Date

Posted in reply to prolifious

The crux behind this:

data temp0;
format yest yymmddn8.;
yest = today() - 1;
var1 = 'abc_';
var2 = cat(var1,yest);
run;

is that yest is a numeric variable, while cat() is a string function; so you force SAS to do an automatic conversion from numeric to character, and in such automatic conversions, no formats are applied, and you get the raw value (days from 1960-01-01 to yesterday) appended.

@Astounding's solution prevents this.

 

Hint: never allow automatic type conversions in your programs (you'll find them by the NOTEs they cause). See my Maxims 31 & 25. Take control.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Contributor
Posts: 24

Re: Concatenate Char to Formatted Date

Posted in reply to KurtBremser

Thank you, Kurt.  These maxims are great!  Good reading I'll take up later on.  Thanks again for your direction.

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 114 views
  • 2 likes
  • 3 in conversation