Maybe there is a function?
SELECT min('[2010-01-01, 2010-02-01)'::daterange);
Should return: '2010-01-01'
SELECT max('[2010-01-01, 2010-02-01)'::daterange);
Should return: '2010-01-31'
No, but you could use upper_inc
, upper
, lower_inc
, lower
functions to write such a function:
WITH dr AS (
SELECT '[2010-01-01, 2010-02-01)'::daterange r
), t AS (
SELECT r, lower_inc(r) li, upper_inc(r) ui, lower(r) l, upper(r) u FROM dr
)
SELECT CASE WHEN li THEN l ELSE l + INTERVAL '1 DAY' END AS "range_minimum"
, CASE WHEN ui THEN u ELSE u - INTERVAL '1 DAY' END AS "range_maximum"
FROM t;