DATA Step, Macro, Functions and more

Converting dates from a character format to a date format

Accepted Solution Solved
Reply
New Contributor
Posts: 3
Accepted Solution

Converting dates from a character format to a date format

I've got a data set where, for one reason or another, one of the date variables is coming in as a character variable. Missing variables are blank, dates are present as things like 01-Nov-08. I need these in the proper SAS days-since-1/1/1960 format.

I've tried using %sysfunc, but I can't seem to get it to cooperate. Any chance someone can point me in the right direction?


Accepted Solutions
Solution
‎09-26-2011 05:37 AM
Super User
Posts: 10,023

Converting dates from a character format to a date format

You can use function input to get that.

num_date=input(char_date,date12.);

format num_date mmddyy12.;

Ksharp

View solution in original post


All Replies
Solution
‎09-26-2011 05:37 AM
Super User
Posts: 10,023

Converting dates from a character format to a date format

You can use function input to get that.

num_date=input(char_date,date12.);

format num_date mmddyy12.;

Ksharp

Frequent Contributor
Posts: 75

Re: Converting dates from a character format to a date format

Hi Ksharp,

Is it the only way to do?

Cheers.

Super User
Posts: 11,343

Re: Converting dates from a character format to a date format

You don't say how you are reading the data but when you indicate " for one reason or another, one of the date variables is coming in as a character variable" I suspect proc import.

Proc Import uses lots of defaults and limited information from the source data. You might be able to write a datastep to read the data source and apply an informat at that time, but without details of the source data this is a guess.

Super User
Posts: 10,023

Re: Converting dates from a character format to a date format

What do you mean ?

proc format;

invalue $fmt

'Nov'=11

'Dec'=12

.........

;

run;

num_date=mdy(

input(scan(char_date,'-',2),$fmt.),

input(scan(char_date,'-',1),best8.),

input(scan(char_date,'-',-1),best8.);


🔒 This topic is solved and locked.

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

Discussion stats
  • 4 replies
  • 366 views
  • 0 likes
  • 4 in conversation