Solved
Contributor
Posts: 55

# splitting date

data demo;
length dt \$9;
dt='mar2010';output;
dt='2007';output;
dt='1feb2010';output;
dt='';output;
dt='32010';output;
dt='142010';output;
run;

i have to separate month,date,year from above dataset,i tried

year= SUBSTR(TRIM(dt),LENGTH(TRIM(dt))-3);
month=SUBSTR(TRIM(dt),LENGTH(TRIM(dt))-6,3);

to get year and month values but i m not getting date value with this logic.

any other way to separate it?

thanks

Accepted Solutions
Solution
‎02-25-2017 03:19 PM
PROC Star
Posts: 8,165

## Re: splitting date

```data demo;
length dt \$9;
dt='mar2010';output;
dt='2007';output;
dt='1feb2010';output;
dt='';output;
dt='32010';output;
dt='142010';output;
run;
data want;
set demo;
format date date9.;
if length(dt) eq 4 then date=mdy(1,1,dt);
else if length(dt) eq 5 then date=mdy(1,first(dt),substr(dt,2));
else if length(dt) eq 6 then date=
mdy(1,substr(dt,1,2),substr(dt,3));
else date=input(dt,anydtdte9.);
month=month(date);
day=day(date);
year=year(date);
if length(dt) eq 7 then call missing(day);
else if length(dt) in (5,6) then call missing(month);
else if length(dt) eq 4 then do;
call missing(month);
call missing(day);
end;
run;
```

Art, CEO, AnalystFinder.com

All Replies
PROC Star
Posts: 8,165

## Re: splitting date

What month, day and year to you expect to get from each of the following:

mar2010
2007
32010
142010

Art, CEO, AnalystFinder.com

Contributor
Posts: 55

## Re: splitting date

[ Edited ]

for 32010 day=3 month= missing and yr =2010

for mar2010 day=missing month=march yr=2010

for 2007 day=missing month=missing yr=2007

for142010 day=14 month=missing yr=2010

Solution
‎02-25-2017 03:19 PM
PROC Star
Posts: 8,165

## Re: splitting date

```data demo;
length dt \$9;
dt='mar2010';output;
dt='2007';output;
dt='1feb2010';output;
dt='';output;
dt='32010';output;
dt='142010';output;
run;
data want;
set demo;
format date date9.;
if length(dt) eq 4 then date=mdy(1,1,dt);
else if length(dt) eq 5 then date=mdy(1,first(dt),substr(dt,2));
else if length(dt) eq 6 then date=
mdy(1,substr(dt,1,2),substr(dt,3));
else date=input(dt,anydtdte9.);
month=month(date);
day=day(date);
year=year(date);
if length(dt) eq 7 then call missing(day);
else if length(dt) in (5,6) then call missing(month);
else if length(dt) eq 4 then do;
call missing(month);
call missing(day);
end;
run;
```

Art, CEO, AnalystFinder.com

Contributor
Posts: 55

## Re: splitting date

Thank you sir

☑ This topic is solved.