Home > Archive > PostgreSQL Bugs > December 2005 > BUG #2093: SUM of timeintervals, no problems in 8.0.3









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author BUG #2093: SUM of timeintervals, no problems in 8.0.3
Björn Sjölenius

2005-12-05, 7:24 am


The following bug has been logged online:

Bug reference: 2093
Logged by: Björn Sjölenius
Email address: salvium@gmail.com
PostgreSQL version: 8.1
Operating system: OpenBSD 3.8
Description: SUM of timeintervals, no problems in 8.0.3
Details:

Just upgraded fron 8.0.5 to 8.1, and a function where I summerize logon time
now give quite odd result. Duplicated the problem;

----------------- Commands to execute ------------------
createdb test
psql test

CREATE TABLE activity_tab (
nick character varying(32),
logon timestamp with time zone,
logoff timestamp with time zone
);

COPY activity_tab (nick, logon, logoff) FROM stdin USING DELIMITERS '|';
apa|2005-11-01 00:00:00+01|2005-11-01 23:00:00+01
apa|2005-11-02 00:00:00+01|2005-11-02 23:00:00+01
apa|2005-11-03 00:00:00+01|2005-11-04 23:00:00+01
\.

SELECT LOWER(nick) AS "nick", SUM(logoff-logon) AS "time"
FROM activity_tab
GROUP BY LOWER(nick);

\q

dropdb test

----------------- End of commands ------------------

The result I get;
nick | time
------+----------------
apa | 1 day 69:00:00


Expected result is what 8.0.3 give me;
nick | time
------+----------------
apa | 3 days 21:00:00


Hope you can help! And a BIG THANKYOU for your great work!

Best regards, Björn

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql
.org so that your
message can get through to the mailing list cleanly

Alvaro Herrera

2005-12-05, 9:24 am

Björn Sjölenius wrote:

> The result I get;
> nick | time
> ------+----------------
> apa | 1 day 69:00:00
>
>
> Expected result is what 8.0.3 give me;
> nick | time
> ------+----------------
> apa | 3 days 21:00:00


Actually this is expected. 8.1 groups hours and days separately,
because there is no way to know if 1 day means 23, 24 or 25 hours (or
even a fractional number like 24.5) in the presence of a daylight-saving
switch event. So "1 day 69 hours" is actually more correct.

There is a function to convert to the older format:

alvherre=# select justify_hours('1 day 69:00:00');
justify_hours
-----------------
3 days 21:00:00
(1 fila)

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql
.org so that your
message can get through to the mailing list cleanly

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com