Pero ellos no. NULL
es una conveniencia de sintaxis cuando se usa como límite de un rango, mientras que -infinity
/ infinity
son valores reales en el dominio del rango. Valores abstractos que significan menor/mayor que cualquier otro valor, pero valores no obstante (que puede incluirse o excluirse).
Además, NULL
funciona para cualquier tipo de rango, mientras que la mayoría de los tipos de datos no tienen valores especiales como -infinity
/ infinity
. Tomar integer
y int4range
por ejemplo.
Para una mejor comprensión, considere el hilo en pgsql-general que un_caballo proporcionado :
Cada el tipo de datos puede ser NULL
, incluso dominios que son explícitamente NOT NULL
. Ver:
Eso incluye date
, por supuesto (como Adrian comentó
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Pero tratando de discutir NULL
como valor (cuando se usa como límite de un rango) es un enfoque engañoso para empezar. No es un valor.
De nuevo, NULL
no se trata como valor en el dominio del rango. Simplemente sirve como sintaxis conveniente para decir:"ilimitado". No más que eso.