Обсуждение: MySQL-esque sec_to_time() function
Hello,
I'm converting from MySQL to PostgreSQL (actually flipping/flopping back) and have a question:
MySQL has a cool function sec_to_time() which converts your number of seconds to hh:mm:ss
I've read thru the mailing lists and am basically trying to implement the following:
MySQL:
select sec_to_time(sum(unix_timestamp(enddate) - unix_timestamp(startdate))) from foo;
PostgreSQL:
select XXX(sum(date_part('epoch',enddate) - date_part('epoch',startdate))) from foo;
I just need to know what XXX is/can be. I've tried a lot of combinations of the documented functions and come up with useless conversions.
Thanks,
George Johnson
PS: i can't find documentation on how to load the functions in contrib. I can compile and
install them O.K., but not sure how to make them load.
Hi George,
Difference of two timestamps directly :
dbtest=# select 'now'::timestamp - '2000-12-06 13:47:57+00'::timestamp
as "Time Interval";
Time Interval
---------------
02:49:34
(1 row)
Number of seconds converted to hh:mm:ss :
dbtest=# select '12345 seconds'::interval as "Time Interval";
Time Interval
---------------
03:25:45
(1 row)
Hope this helps
Francis Solomon
-----Original Message-----
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org]On Behalf Of George Johnson
Sent: 06 December 2000 16:28
To: pgsql-general@postgresql.org
Subject: [GENERAL] MySQL-esque sec_to_time() function
Hello,
I'm converting from MySQL to PostgreSQL (actually flipping/flopping
back) and have a question:
MySQL has a cool function sec_to_time() which converts your number of
seconds to hh:mm:ss
I've read thru the mailing lists and am basically trying to implement
the following:
MySQL:
select sec_to_time(sum(unix_timestamp(enddate) -
unix_timestamp(startdate))) from foo;
PostgreSQL:
select XXX(sum(date_part('epoch',enddate) -
date_part('epoch',startdate))) from foo;
I just need to know what XXX is/can be. I've tried a lot of
combinations of the documented functions and come up with useless
conversions.
Thanks,
George Johnson
gjohnson@jdsc.com
PS: i can't find documentation on how to load the functions in contrib.
I can compile and
install them O.K., but not sure how to make them load.
On Wed, Dec 06, 2000 at 08:27:56AM -0800, George Johnson wrote:
> Hello,
>
> I'm converting from MySQL to PostgreSQL (actually flipping/flopping
> back) and have a question:
>
> MySQL has a cool function sec_to_time() which converts your number
> of seconds to hh:mm:ss
>
> I've read thru the mailing lists and am basically trying to
> implement the following:
>
> MySQL:
> select sec_to_time(sum(unix_timestamp(enddate) - unix_timestamp(startdate))) from foo;
>
> PostgreSQL:
> select XXX(sum(date_part('epoch',enddate) - date_part('epoch',startdate))) from foo;
>
> I just need to know what XXX is/can be. I've tried a lot of
> combinations of the documented functions and come up with useless
> conversions.
You could implement sec_to_time as a SQL function:
create function sec_to_time(int4)
returns text
as '
select(to_char(''today''::timestamp + interval($1), ''HH24:MI:SS''))
' language 'sql';
However, this function would be limited to time spans of 24 hours.
Zach
--
xach@xach.com Zachary Beane http://www.xach.com/