Men det gör de inte. NULL
är en syntaxbekvämlighet när det används som gräns för ett intervall, medan -infinity
/ infinity
är faktiska värden inom områdets domän. Abstrakta värden betyder mindre/större än alla andra värden, men värden ändå (som kan inkluderas eller uteslutas).
Även NULL
fungerar för alla områdestyp, medan de flesta datatyper inte har speciella värden som -infinity
/ infinity
. Ta integer
och int4range
till exempel.
För en bättre förståelse, överväg tråden i pgsql-general som en_häst tillhandahålls :
Det inkluderar date
, naturligtvis (som Adrian kommenterade
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Men försöker diskutera NULL
som värde (när det används som gräns för ett intervall) är ett missvisande tillvägagångssätt till att börja med. Det är inte ett värde.
Återigen, NULL
behandlas inte som värde i områdets domän. Det fungerar bara som en bekväm syntax att säga:"obegränsad". Inte mer än så.