Date Variables in SAS
SAS stores all dates variables as numbers with the 1st of January 1960 as zero. So, for example, New Years Day 2020 is day number 21915 in SAS. This article explains how you can create date variables in SAS with the MDY function.
The MDY syntax
MDY(month, day, year)
The MDY (Month Day Year) function contains three obligatory arguments:
- month: The month of the date you want to create.
- day: The day of the date you want to create.
- year: The year of the date you want to create. This argument can be two or four digits long. However, it’s recommended to use the four-digit format to avoid confusion.
All arguments can be constants or variables. In the next section, you find examples of both possibilities.
SAS Code & Examples
Below you find some examples of how to create SAS date variables with the MDY function. In the first example, we create a simple date variable where the arguments are constants. The date we create is the 20th of June 2020.
data work.ds_mydate; my_date = mdy(6, 20, 2020); format my_date date9.; run;
In the next example, we create some dates where the arguments are existing columns.
data work.ds; input month day year; datalines; 1 1 2020 6 7 2020 12 31 2020 7 14 2020 ; run; data work.ds_mdy; set work.ds; my_date = mdy(month, day, year); format my_date date9.; run;
data work.ds_today; my_today = today(); format my_today date9.; run; data work.ds_my_datetime; set work.ds_today; my_datetime = dhms(my_today, 18, 30, 0); format my_datetime datetime20.; run;
Keep in mind that both Date and Date Time variables in SAS are numbers. So, to make them interpretable you need to format them. For example, with the date9. format or the datetim20. format.
You can find the official SAS documentation about the MDY function here.
This useful online tool converts Date (Time) variables into a number. This can be handy when you work with macro variables.