How to use DAY, MONTH, and YEAR Functions in SAS?

The DAY, MONTH, and YEAR functions in SAS are used to extract the day, month, or year from a SAS date value. These functions can be used together to create a date in the desired format. Additionally, they can be used to calculate the difference between two dates or to add or subtract a specified number of days, months, or years to a date.


You can use the DAY, MONTH, and YEAR functions in SAS to extract the day, month, and year as numeric values from a date variable.

The following examples show how to use these functions in practice.

Example 1: Extract Day, Month, Year from Date in SAS

Suppose we have the following dataset in SAS that shows the birth date for seven individuals:

/*create dataset*/
data original_data;
    format birth_date date9.;
    input birth_date :date9.;
    datalines;
01JAN2021
22FEB2022
14MAR2022
29MAY2022
14OCT2023
01NOV2024
26DEC2025
;
run;

/*view dataset*/
proc print data=original_data;

We can use the following code to create three new variables that show the day, month, and year of the birth date for each individual:

/*create new dataset*/
data new_data;
    set original_data;
    day = DAY(birth_date);
    month = MONTH(birth_date);
    year = YEAR(birth_date);
run;

/*view new dataset*/
proc print data=new_data;

DAY, MONTH, YEAR functions in SAS

The three new variables show the day, month, and year of the birth_date variable, respectively.

Example 2: Extract Only Month & Year from Date in SAS

The following code shows how to create a new variable that displays just the month and year of a date variable in SAS:

/*create new dataset*/
data new_data;
    set original_data;
    month_year = birth_date;
    format month_year mmyyn6.;
run;

/*view new dataset*/
proc print data=new_data;

Notice that the new variable month_year contains only the month and year of the birth_date variable.

If you’d like the month to appear after the year, simply use a format of yymmn6. instead:

/*create new dataset*/
data new_data;
    set original_data;
    month_year = birth_date;
    format month_year yymmn6.;
run;

/*view new dataset*/
proc print data=new_data;

The following tutorials explain how to perform other common tasks in SAS:

x