Thread: Possible age() bug?

Possible age() bug?

From
"Mitch Vincent"
Date:
Maybe I'm just overlooking something really simple but this has me a bit
confused.

What I'm trying to do is get the amount of time from A to B -- I thought
age() would do just that but it seems to be about a day off sometimes.

hhs=# SELECT age('Sun Dec 03 08:00:00 2000 EST','Tue Oct 10 08:00:00 2000
EDT') as esec;         esec
------------------------@ 1 mon 24 days 1 hour
(1 row)

Ok, but if I turn right around and add that value back , I get :


hhs=# SELECT ('Tue Oct 10 08:00:00 2000 EDT'::timestamp + '1 mon 24 days 1
hour'::interval);          ?column?
------------------------------Mon Dec 04 08:00:00 2000 EST
(1 row)

Like I said, perhaps I'm blind and can't see what's happening here but
shouldn't that be Sunday the 3rd of December?


I should point out that it works as I expected it to on other values..

hhs=# SELECT age('Sun Nov 05 08:00:00 2000 EST','Tue Oct 10 08:00:00 2000
EDT') as esec;      esec
------------------@ 26 days 1 hour
(1 row)

hhs=# SELECT ('Tue Oct 10 08:00:00 2000 EDT'::timestamp + '1 mon 24 days 1
hour'::interval);          ?column?
------------------------------Mon Dec 04 08:00:00 2000 EST
(1 row)

*shrug*

Thanks!

-Mitch



Re: Possible age() bug?

From
"Mitch Vincent"
Date:
> I should point out that it works as I expected it to on other values..
>
> hhs=# SELECT age('Sun Nov 05 08:00:00 2000 EST','Tue Oct 10 08:00:00 2000
> EDT') as esec;
>        esec
> ------------------
>  @ 26 days 1 hour
> (1 row)
>
> hhs=# SELECT ('Tue Oct 10 08:00:00 2000 EDT'::timestamp + '1 mon 24 days 1
> hour'::interval);
>            ?column?
> ------------------------------
>  Mon Dec 04 08:00:00 2000 EST
> (1 row)


I was obviously on drugs when I put this in the email, I apologize. It does
indeed work as I expected it to on other values.

In an old 6.4 database I get what I expected ::

hhs=> SELECT age('Sun Dec 03 08:00:00 2000 EST','Tue Oct 10 08:00:00 2000
EDT') as esec;
esec
----------------------
@ 1 mon 24 days 1 hour
(1 row)

hhs=> SELECT ('Tue Oct 10 08:00:00 2000 EDT'::timestamp + '1 mon 24 days 1
hour'::interval);
?column?
----------------------------
Sun Dec 03 07:00:00 2000 CST
(1 row)

(Timezone differences are there and expected, these boxes are all across the
country).


-Mitch