BookmarkSubscribeRSS Feed
frisco
Calcite | Level 5


Is there an easy and straightforward way to express a datetime value as a fraction? For example 1:15PM would be 1.25

4 REPLIES 4
art297
Opal | Level 21

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

;

jsasusr
Fluorite | Level 6

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

 

ballardw
Super User

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;

data_null__
Jade | Level 19

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.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

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!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1687 views
  • 0 likes
  • 5 in conversation