Converting time to float - Mailing list pgsql-general

From Jorge Godoy
Subject Converting time to float
Date
Msg-id 874pn2xcsg.fsf@gmail.com
Whole thread Raw
Responses Re: Converting time to float  (Richard Huxton <dev@archonet.com>)
List pgsql-general
Hi!


I am needing to convert from TIME type to floats and taking 1h as the
unit, so what I'd like is something that would allow me doing operations
like:

SELECT '00:10:00'::TIME / '1:00:00'::TIME;  -- Answer is: 0.16666666666666666667
SELECT '00:30:00'::TIME / '1:00:00'::TIME;  -- Answer is: 0.5
SELECT '01:10:00'::TIME / '1:00:00'::TIME;  -- Answer is: 1.16666666666666666667

or

SELECT '00:10:00'::TIME / '1 hour'::INTERVAL;  -- Answer is: 0.16666666666666666667
SELECT '00:30:00'::TIME / '1 hour'::INTERVAL;  -- Answer is: 0.5
SELECT '01:10:00'::TIME / '1 hour'::INTERVAL;  -- Answer is: 1.16666666666666666667

i.e., I want to see how many times one time value fits in another.  I'll
have times with just seconds, minutes and seconds and I might have times
with hours, minutes and seconds to make this fit.


My first idea is converting each part of the time individually by diving
it by 1.0 (hours), by 60.0 (minutes) or by 3600.0 (for seconds) and then
adding it all up...  Of course I won't do the division for hours and I'm
using floats here to for a float division instead of an integer
division.


Any hints or a better recipe? :-)

--
Jorge Godoy      <jgodoy@gmail.com>

pgsql-general by date:

Previous
From: Nico Sabbi
Date:
Subject: Some problem with warm standby server
Next
From: Martijn van Oosterhout
Date:
Subject: Re: Vacuum-full very slow