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

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 1711 views
  • 0 likes
  • 5 in conversation