Los valores de los tipos de conjunto y de rango se pueden convertir entre sí o convertirse a tipos de rango de PostgreSQL y desde ellos mediante la función CAST
o mediante la notación ::
.
Convertir un valor de base en un valor de conjunto, rango o conjunto de rangos
base::{set,span,spanset}
set(base) → set
span(base) → span
spanset(base) → spanset
SELECT CAST(timestamptz '2001-01-01 08:00:00' AS tstzset); -- {2001-01-01 08:00:00} SELECT timestamptz '2001-01-01 08:00:00'::tstzspan; -- [2001-01-01 08:00:00, 2001-01-01 08:00:00] SELECT spanset(timestamptz '2001-01-01 08:00:00'); -- {[2001-01-01 08:00:00, 2001-01-01 08:00:00]}
Convertir un valor de conjunto en un valor de conjunto de rangos
set::spanset
spanset(set) → spanset
SELECT spanset(tstzset '{2001-01-01 08:00:00, 2001-01-01 08:15:00, 2001-01-01 08:25:00}'); /* {[2001-01-01 08:00:00, 2001-01-01 08:00:00], [2001-01-01 08:15:00, 2001-01-01 08:15:00], [2001-01-01 08:25:00, 2001-01-01 08:25:00]} */
Convertir un valor de rango a un valor de conjunto de rangos
span::spanset
spanset(span) → spanset
SELECT floatspan '[1.5,2.5]'::floatspanset; -- {[1.5, 2.5]} SELECT tstzspan '[2001-01-01 08:00:00, 2001-01-01 08:30:00)'::tstzspanset; -- {[2001-01-01 08:00:00, 2001-01-01 08:30:00)}
Convertir un conjunto de valores o un conjunto de rangos a un rango, ignorando las posibles brechas de tiempo
{set,spanset}::span
span({set,spanset}) → span
SELECT span(dateset '{2001-01-01, 2001-01-03, 2001-01-05}'); -- [2001-01-01, 2001-01-06) SELECT span(tstzspanset '{[2001-01-01, 2001-01-02), [2001-01-03, 2001-01-04)}'); -- [2001-01-01, 2001-01-04)
Convertir un valor de de rango en MobilityDB hacia y desde un valor de rango de PostgreSQL
span::range
range::span
range(span) → range
span(range) → span
Nótese que los valores de rango en PostgreSQL aceptan rangos vacíos y rangos con límites infinitos, que no están permitidos como valores de rango en MobilityDB
SELECT intspan '[10, 20)'::int4range; -- [10,20) SELECT tstzspan '[2001-01-01 08:00:00, 2001-01-01 08:30:00)'::tstzrange; -- ["2001-01-01 08:00:00","2001-01-01 08:30:00") SELECT int4range '[10, 20)'::intspan; -- [10,20) SELECT int4range 'empty'::intspan; -- ERROR: Range cannot be empty SELECT int4range '[10,)'::intspan; -- ERROR: Range bounds cannot be infinite SELECT tstzrange '[2001-01-01 08:00:00, 2001-01-01 08:30:00)'::tstzspan; -- [2001-01-01 08:00:00, 2001-01-01 08:30:00)
Convertir un valor de conjunto de rangos de MobilityDB hacia y desde un valor de multirango de PostgreSQL
spanset::multirange
multirange::spanset
multirange(spanset) → multirange
spanset(multirange) → spanset
SELECT intspanset '{[1,2],[4,5]}'::int4multirange; -- {[1,3),[4,6)} SELECT tstzspanset '{[2001-01-01,2001-01-02],[2001-01-04,2001-01-05]}'::tstzmultirange; -- {[2001-01-01,2001-01-02],[2001-01-04,2001-01-05]} SELECT int4multirange '{[1,2],[4,5]}'::intspanset; -- {[1, 3), [4, 6)} SELECT tstzmultirange '{[2001-01-01,2001-01-02],[2001-01-04,2001-01-05]}'::tstzspanset; -- {[2001-01-01, 2001-01-02], [2001-01-04, 2001-01-05]}