- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi everyone,
I want to convert a date variable with the following formatting 01JAN2008 (the format is Date9.) to a date variable of year only (i.e. 2008).
Could you please provide some guidance on the syntax to do that?
Thanks in advance!
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Something like this?
data have;
d = '01JAN2008'd;
format d date9.;
year=year(d);
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
You have a few options.
1. Convert it to a numerical variable, which is basically the year function
myDate = '01Jan2008'd;
myYear = year(myDate);
2. You can use a format instead to change the appearance. PROC MEANS/FREQ/SUMMARY will respect the format, PROC SQL will not. This changes how the variable is display but not the underlying data.
format myDate year4.;
3. You can do a combination of 1/2, supposing you wanted it as year but in a different variable.
myYear = myDate;
format myYear year4.;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for your response. I do want to run some proc sql later on, so simply formatting the variable is not the most optimal option.
In the first option you gave me "Convert it to a numerical variable, which is basically the year function" - how can I go about applying that to 12 months (i.e. 01Jan2000, 1Feb2000, 01Mar2000, etc.) with five years worth of data? (i.e. 2000-2004; I have a combination of 01Jan2000, 01Jan2001, 01Jan2002, etc.).
Thanks again!
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
@Jack_Smitherson wrote:
Thank you for your response. I do want to run some proc sql later on, so simply formatting the variable is not the most optimal option.
In the first option you gave me "Convert it to a numerical variable, which is basically the year function" - how can I go about applying that to 12 months (i.e. 01Jan2000, 1Feb2000, 01Mar2000, etc.) with five years worth of data? (i.e. 2000-2004; I have a combination of 01Jan2000, 01Jan2001, 01Jan2002, etc.).
Thanks again!
That depends on your data structure.
Use the YEAR() function on the variable to obtain the YEAR.