Alternatively, you may want to extract the dates from your datetime values by means of the DATEPART function and then assign the date format of your choice to the resulting SAS date values:
data want;
set have;
date=datepart(time);
format date yymmdd10.;
run;
Background:
Variables with date, time or datetime formats are ordinary numeric variables, i.e., they contain numbers.
What kind of numbers?
numbers of days after 1 January 1960 in the case of date values (e.g. 14335 for 1 April 1999)
numbers of seconds after midnight (00:00) in the case of time values (e.g. 41400 for 11:30 AM)
numbers of seconds after 1 January 1960, 00:00 in the case of datetime values (e.g. 1238585400 for 1 April 1999, 11:30 AM).
Date, time and datetime formats interpret these numbers accordingly in order to display the values in a human readable form.
So, when you (inappropriately) apply the date format YYMMDD10. to your datetime variable TIME, SAS tries to interpret values like 1238585400 (a number of seconds after 1 Jan 1960, 00:00) as a number of days after 1 Jan 1960. The result, a date about 3 million years (!) from now, exceeds the range of admissible SAS date values and is therefore displayed as ********** by format YYMMDD10.
... View more