Interval bug

From: Mitchell Brandsma <mitchell(at)pienetworks(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Interval bug
Date: 2001-01-10 04:28:03
Message-ID: 3A5BE4D3.9E7592E4@pienetworks.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi guys,

Firstly,
Postgres rocks! Our live database is rapidly growing and
ever-reliable. We're stupidly storing URLs visited by nearly a thousand
of our own machines, and are yet to miss a beat (apart from the obvious
speed problems)!

Secondly, we have a problem with interval math, detailed below. Should
be reproducible on any platform(?)

Regards,
- Mitchell Brandsma (mitchell(at)pienetworks(dot)com)

Version: 7.0.2 (is it fixed in the latest?)

To reproduce:
psql <nameyourdatabase>

=# select '2 years ago'::interval + '1 year 360 days 00:00'::interval;
?column?
----------------------
1 year 360 00:00 ago ### Wrong! (Should be 5 or 6 days depending
on interpretation?)
(1 row)

=# select '2 years ago'::interval - '1 year 360 days 00:00'::interval;
?column?
-----------------------
3 years 360 00:00 ago ### Correct

=# select '365 days'::interval - '1 year'::interval; <-- should
be ~ 0 or 1 day(s)
?column?
----------------------
1 year 365 00:00 ago ### Wrong!
(1 row)

Another eg:

=# select 'today'::datetime;
?column?
------------------------
2001-01-10 00:00:00+08 ### Today
(1 row)

=# create temp table testdate_mkb (td interval);
CREATE
=# insert into testdate_mkb select ('2 years'::interval - '1 year 353
00:00 ago') ;
INSERT 246954387 1
=# select * from testdate_mkb;
td
-------------------
3 years 353 00:00 ### !!!!!!
(1 row)

pielive=# select 'today'::datetime + td from testdate_mkb;
?column?
------------------------
2004-12-28 00:00:00+08
(1 row)

The correct answer is of course about 12 days (2 years - 1 year 353
days) from now, not nearly 4 years

Platforms tried on:
PIII 500, uname: Linux dbserver 2.2.13 #21 Thu Dec 16 06:50:30 WST 1999
i686 unknown
Celeron, uname: Linux dbserver 2.2.12-20 #1 Mon Sep 27 10:40:35 EDT 1999
i686 unknown (RedHat)

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Bruno Wolff III 2001-01-10 05:00:59 Problem using pg_dump going from 7.0.3 to 7.1beta3
Previous Message James Troup 2001-01-09 06:52:24 pgsql 7.1: int4out() brokeness?