Re: Interval "1 month" is equals to interval "30 days" - WHY? - Mailing list pgsql-general

From Dmitry Koterov
Subject Re: Interval "1 month" is equals to interval "30 days" - WHY?
Date
Msg-id CA+CZih5uumVA4OUUY5oTH_=OqQwUE2Xvz45TtRFqCUd-1MAmsw@mail.gmail.com
Whole thread Raw
In response to Interval "1 month" is equals to interval "30 days" - WHY?  (Dmitry Koterov <dmitry@koterov.ru>)
List pgsql-general
...and even worse:

SELECT ('1 year'::interval) = ('360 days'::interval); --> TRUE :-)
SELECT ('1 year'::interval) = ('365 days'::interval); --> FALSE :-)


On Tue, Aug 7, 2012 at 4:42 PM, Dmitry Koterov <dmitry@koterov.ru> wrote:
Hello.

I've just discovered a very strange thing:

SELECT '1 mon'::interval = '30 days'::interval   --> TRUE???

This returns TRUE (also affected when I create an unique index using an interval column). Why?

I know that Postgres stores monthes, days and seconds in interval values separately. So how to make "=" to compare intervals "part-by-part" and not treat "1 mon" as "30 days"?

P.S.
Reproduced at least in 8.4 and 9.1.

pgsql-general by date:

Previous
From: Marek Kielar
Date:
Subject: Re: Clogging problem
Next
From: Magnus Hagander
Date:
Subject: Re: Where is diskchecker.pl ?