This SQL:
select daterange(current_date, current_date);
Results in:
daterange
-----------
empty
(1 row)
But the daterange() function does not seem to be documented. I've looked here and there. All I can see is that daterange() creates a daterange value with an exclusive end-date (hence the empty result).
Where can I find more about this function?
Is there a related function that can create a daterange value with an inclusive end-date?
PostgreSQL "daterange" is one of (built-in) rangetypes: int4range, int8range, numrange, tsrange, tstzrange, daterange.
And daterange is discrete range - is one whose element type has a well-defined “step”, such as integer or date.
Ranges have Inclusive and Exclusive Bounds.
Default is '[)' - include lower and exclude upper bound.
So
daterange(current_date, current_date)
is - from current_date to current_date excluded. This interval is "empty".
| daterange |
|---|
| empty |
We can create daterange with bounds '[]'
daterange(current_date, current_date,'[]')
| daterange |
|---|
| [2025-08-15,2025-08-16) |
from "current_date" to "current_date+1", excluding "current_date+1".
This is equal to
daterange(current_date, current_date+1);
or
daterange(current_date, current_date+1,'[)');