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.
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.