The comparison operators (=
, <
, and so on) require that the left and right arguments be of the same type. Excepted equality and inequality, the other comparison operators are not useful in the real world but allow B-tree indexes to be constructed on set and span types. For span values, the operators compare first the lower bound, then the upper bound. For set and span set values, the operators compare first the bounding spans, and if those are equal, they compare the first N values or spans, where N is the minimum of the number of composing values or spans of both values.
The comparison operators available for the set and span types are given next. Recall that integer spans are always represented by their canonical form.
Are the values equal?
{set,spans} = {set,spans} → boolean
SELECT tstzset '{2001-01-01, 2001-01-02}' = tstzset '{2001-01-01, 2001-01-04}'; -- false SELECT intspan '[1,3]' = intspan '[1,4)'; -- true SELECT tstzspan '[2001-01-01, 2001-01-04)' = tstzspan '[2001-01-01, 2001-01-04)'; -- true SELECT floatspanset '{[1, 2),[2,3)}' = floatspanset '{[1,3)}'; -- true
Are the values different?
{set,spans} <> {set,spans} → boolean
SELECT tstzset '{2001-01-01, 2001-01-04}' <> tstzset '{2001-01-01, 2001-01-05}'; -- false SELECT tstzspan '[2001-01-01, 2001-01-04)' <> tstzspan '[2001-01-03, 2001-01-05)'; -- true
Is the first value less than the second one?
{set,spans} < {set,spans} → boolean
SELECT tstzset '{2001-01-01, 2001-01-04}' < tstzset '{2001-01-01, 2001-01-05}'; -- true SELECT floatspan '[3, 4]' < floatspan '(3, 4]'; -- true SELECT tstzspan '[2001-01-01, 2001-01-04)' < tstzspan '[2001-01-01, 2001-01-04]'; -- true SELECT intspanset '{[1,2],[3,4]}' < intspanset '{[3, 4]}'; -- true
Is the first value greater than the second one?
{set,spans} > {set,spans} → boolean
SELECT floatspan '[3, 4]' > floatspan '[3, 4)'; -- true SELECT tstzspan '[2001-01-03, 2001-01-04)' > tstzspan '[2001-01-02, 2001-01-05)'; -- true
Is the first value less than or equal to the second one?
{set,spans} <= {set,spans} → boolean
SELECT floatspanset '{[1, 4)}' <= floatspanset '{[1, 5), [6, 7)}'; -- true SELECT tstzspanset '{[2001-01-01, 2001-01-04)}' <= tstzspanset '{[2001-01-01, 2001-01-05), [2001-01-06, 2001-01-07)}'; -- true
Is the first value greater than or equal to the second one?
{set,spans} >= {set,spans} → boolean
SELECT tstzspan '[2001-01-03, 2001-01-05)' >= tstzspan '[2001-01-03, 2001-01-04)'; -- true SELECT intspanset '{[1, 4)}' >= intspanset '{[1, 5), [6, 7)}'; -- false