On Fri, May 25, 2018 at 3:33 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> Alexey Bashtanov <bashta...@imap.cc> writes:
> > Comparison of timetz values looks a bit weird to me, as
> > '22:00+02'::timetz > '21:00+01'::timetz.
>
> Perhaps, but I don't think there's a reasonable case for considering
> them equal, either.  In the other places where obviously-different
> values compare equal, such as zero versus minus zero in IEEE floats,
> it's widely understood as a gotcha.
>

Except all we've done here is expose an implementation detail since
timestamptz compares on a logical "point in time" notion of equality while
timetz does not.  Limitations of timetz aside adding a random date and
changing the type to "timestamptz" would not obviously cause the result of
the above comparison to change and the fact that it does could be
considered a gotcha when the behavior of timestamptz is likely to be the
widely understood and accepted and the behavior of timetz inferred from it.​


> > What's the problem with these values to be considered equal?
> > Backward compatibility? Hash algorithms?
>
> Even if you'd made a case why we should consider them equal,
> those would be very good reasons not to change behavior that's
> stood for 17 years.
>

​This is true, and the alternative doesn't have the supporting argument of
being spec-compliant either...

The notes in 8.5.3 Time Zone (v10 docs) seem to apply here overall - the
type, while standard, is ill-conceived.  Those who cannot stop using it
would not appreciate us changing it and those dealing with the oddity now
should just use timestamptz.

https://www.postgresql.org/docs/10/static/datatype-datetime.html

David J.

Reply via email to