Re: Interval "1 month" is equals to interval "30 days" - WHY?

From: Dmitry Koterov <dmitry(at)koterov(dot)ru>
To: Postgres General <pgsql-general(at)postgresql(dot)org>
Subject: Re: Interval "1 month" is equals to interval "30 days" - WHY?
Date: 2012-08-07 12:52:35
Message-ID: CA+CZih5uumVA4OUUY5oTH_=OqQwUE2Xvz45TtRFqCUd-1MAmsw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)koterov(dot)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.
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Magnus Hagander 2012-08-07 13:00:10 Re: Where is diskchecker.pl ?
Previous Message Marek Kielar 2012-08-07 12:49:50 Re: Clogging problem