🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Fluorite | Level 6

## Date extract

If date is 2019/un/un.how can I get 2019 or 11/un/un.from this how we can extract 11
1 ACCEPTED SOLUTION

Accepted Solutions
PROC Star

## Re: Date extract

Hi @Sowmya12,

If the first part of your data is always the year, then the below might help (assuming your date is character, based on what you've shown).

The scan() function selects part of string that is separated by a specific character(s).

data have;
input my_date : \$char10.;

datalines;
2019/un/un
11/un/un
;

data want;
set have;

y = scan(my_date,1,'/');
run;

Kind regards,

Amir.

5 REPLIES 5
Super User

## Re: Date extract

11 is not a year (2011 would be).

If you don't even know the order of the parts (YMD, DMY or MDY), you can't solve this.

PROC Star

## Re: Date extract

Hi @Sowmya12,

If the first part of your data is always the year, then the below might help (assuming your date is character, based on what you've shown).

The scan() function selects part of string that is separated by a specific character(s).

data have;
input my_date : \$char10.;

datalines;
2019/un/un
11/un/un
;

data want;
set have;

y = scan(my_date,1,'/');
run;

Kind regards,

Amir.

PROC Star

## Re: Date extract

Hi @Sowmya12,

I meant to add a length statement to give y a length of 4.

Kind regards,

Amir.

Super User

## Re: Date extract

I would store year as a number with length 3. This allows years up to 8192, consumes the least space, and can be used in calculations or functions without conversion.

PROC Star

## Re: Date extract

True.

Discussion stats
• 5 replies
• 588 views
• 0 likes
• 3 in conversation