Is there an easy and straightforward way to express a datetime value as a fraction? For example 1:15PM would be 1.25
Since time is just the number of seconds since midnight, you just have to divide by 60*60. Although, doing that would give you 13.25 rather than 1.25, but would allow you to differentiate between 1:15am and 1:15pm.
e.g.:
data have;
informat dt anydtdtm21.;
input dt;
fraction=timepart(dt)/(60*60);
cards;
28nov2012:01:15:00
28nov2012:13:30:00
;
This worked closer to my problem without the formatting:
NOTE. My field "Hours" was formatted as time5.
So....
data crsefile;
set crsefile;
hoursdec=timepart(hours)/(60*60);
run;
So hours 1:55 became 1.9166666667
or fractiontime = hour(datetimevariable) + minute(datetimevariable)/60;
if you don't want hour 13 to 23, ignoring AM/Pm
fractiontime = mod(hour(datetimevariable),12) + minute(datetimevariable)/60;
Perhaps you want HOUR format http://support.sas.com/documentation/cdl/en/leforinforref/63324/HTML/default/viewer.htm#p1ajv0kbaa42...
you will need to separate the time from the datetime.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.