Mas eles não.
NULL é uma conveniência de sintaxe quando usado como limite de um intervalo, enquanto -infinity / infinity são valores reais no domínio do intervalo. Valores abstratos significando menor/maior que qualquer outro valor, mas valores mesmo assim (que pode ser incluído ou excluído). Além disso,
NULL funciona para qualquer tipo de intervalo, enquanto a maioria dos tipos de dados não tem valores especiais como -infinity / infinity . Pegue integer e int4range por exemplo. Para uma melhor compreensão, considere o tópico em pgsql-general que um_cavalo fornecido :
Toda tipo de dados pode ser
NULL , mesmo domínios que são explicitamente NOT NULL . Ver:Isso inclui
date , claro (como Adrian comentou
):test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Mas tentando discutir
NULL como valor (quando usado como limite de um intervalo) é uma abordagem enganosa para começar. Não é um valor. Novamente,
NULL não é tratado como valor no domínio do intervalo. Serve apenas como sintaxe conveniente para dizer:"unbounded". Não mais do que isso.