El operador de distancia <-> para los tipos de rango o de tiempo considera el lapso o período delimitador y devuelve la distancia más pequeña entre los dos valores. La distancia tiene el tipo de la diferencia de dos valores, tal como la responde el operador de resta de PostgreSQL: el tipo base para los números, la cantidad de días como integer para las fechas, y un interval para las marcas de tiempo. El operador de distancia también se puede usar para búsquedas de vecinos más cercanos utilizando un índice GiST o SP-GiST (ver “Indexación”).
Devuelve la distancia mínima
numbers <-> numbers → base
dates <-> dates → integer
times <-> times → interval
{base,spatialset} <-> {base,spatialset} → float
setDistance({geography,geogset},{geography,geogset},spheroid boolean=true) → float
Para geografías, el operador calcula en el esferoide WGS 84, y la función setDistance calcula en la esfera, más rápido, si su último argumento es falso.
SELECT 3 <-> intspan '[6, 8)';
-- 3
SELECT floatspan '[1, 3]' <-> floatspan '(5.5, 7]';
-- 2.5
SELECT floatspan '[1, 3]' <-> floatspanset '{(5.5, 7],[8, 9]}';
-- 2.5
SELECT tstzspan '[2001-01-02, 2001-01-06)' <-> timestamptz '2001-01-07';
-- 1 day
SELECT dateset '{2001-01-01, 2001-01-03, 2001-01-05}' <->
dateset '{2001-01-02, 2001-01-04}';
-- 0
SELECT round((geography 'Point(0 0)' <->
geogset '{"Point(0 1)", "Point(0 2)"}')::numeric, 3);
-- 110574.389
SELECT round(setDistance(geography 'Point(0 0)', geogset '{"Point(0 1)", "Point(0 2)"}',
false)::numeric, 3);
-- 111195.080