Мы можем попробовать использовать функции upper()
и lower()
, чтобы найти верхнюю и нижнюю границу диапазона дат.Затем возьмите разницу между этими датами, чтобы определить количество дней между ними:
SELECT
UPPER(daterange('2018-01-01', '2018-02-01')) -
LOWER(daterange('2018-01-01', '2018-02-01')) AS diff;
31
Обратите внимание, что способ построения диапазона фактически идентичен этому:
daterange('2018-01-01', '2018-02-01', '[)')
То есть диапазон является исключительной верхней границей.В результате в подсчет включаются только 31 января января 2018 года, но 1 февраля исключается.Если вы вместо этого хотите включить и эту точку даты, вы можете использовать этот диапазон:
daterange('2018-01-01', '2018-02-01', '[]')
Выполнение вышеуказанного запроса приведет к подсчету дней 32.