Hello,
I have a problem with DATE in SAS.
I have DATE in my table
when i change the format of this date (Format AUGDT DATE9.;)
I get only ****** (9999-12-31)
What is all about?
Dates and times are stored a numbers from a certain time point. AUGDT you give is a datetime variable. Hence the number stored behind the scenes is a datetime amount from a certain time. If you then try to format this larger number as a smaller date it is far outside the proper date number range hence you get *****.
You need to split the date part of the datetime out, then format that, eg;
data want; set have; mydate=datepart(augdt); format mydate date9.; run;
Run this coe for instance, then look at the values in show_actual_value variables, you can see the difference:
data test; augdt="01JAN2016 14:15"dt; show_actual_value_dt=augdt; d9fmt=datepart(augdt); show_actual_value_d=d9fmt; format augdt datetime. d9fmt date9.; run;
Dates and times are stored a numbers from a certain time point. AUGDT you give is a datetime variable. Hence the number stored behind the scenes is a datetime amount from a certain time. If you then try to format this larger number as a smaller date it is far outside the proper date number range hence you get *****.
You need to split the date part of the datetime out, then format that, eg;
data want; set have; mydate=datepart(augdt); format mydate date9.; run;
Run this coe for instance, then look at the values in show_actual_value variables, you can see the difference:
data test; augdt="01JAN2016 14:15"dt; show_actual_value_dt=augdt; d9fmt=datepart(augdt); show_actual_value_d=d9fmt; format augdt datetime. d9fmt date9.; run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.