F.11. daterange_inclusive

daterange_inclusive — это расширение встроенного диапазонного типа daterange. По умолчанию daterange исключает верхнюю границу диапазона [), а daterange_inclusive — нет []. За исключением границы покрываемого диапазона между daterange и daterange_inclusive нет разницы.

Данный модуль считается «доверенным», то есть его могут устанавливать обычные пользователи, имеющие право CREATE в текущей базе данных.

F.11.1. Обоснование

Иногда бывает удобно выводить временные диапазоны со включённой верхней границей. Например, это применимо к отпускам сотрудников. Если сотрудник в отпуске с 1 января 2025 года по 10 января 2025 года, база данных не сможет полностью вывести этот временной диапазон при использовании диапазонного типа daterange. В этом случае необходимо вручную вычитать один день из вывода. Расширение daterange_inclusive решает эту проблему.

F.11.2. Пример использования

   CREATE EXTENSION daterange_inclusive;
   SELECT daterange('[2024-01-01,2024-06-01]');
         daterange
   -------------------------
   [2024-01-01,2024-06-02)

   SELECT daterange_inclusive('[2024-01-01,2024-06-01]');
      daterange_inclusive
   -------------------------
   [2024-01-01,2024-06-01]
   

F.11. daterange_inclusive

daterange_inclusive is an extension to the built-in daterange range type. By default, daterange excludes the upper bound of the range — [), whereas daterange_inclusive does not — []. Other than the covered range bound, there are no other differences between daterange and daterange_inclusive.

This module is considered trusted, that is, it can be installed by non-superusers who have CREATE privilege on the current database.

F.11.1. Rationale

At times, it is more convenient to output date ranges with inclusive upper bounds. For example, it may apply to employees' absences. If an employee is absent from January 1, 2025, to January 10, 2025, using the daterange range type will prevent the database from outputting this date range in its entirety. In such cases, you would need to manually subtract one day from the output. The daterange_inclusive extension addresses this issue.

F.11.2. Example Usage

   CREATE EXTENSION daterange_inclusive;
   SELECT daterange('[2024-01-01,2024-06-01]');
         daterange
   -------------------------
   [2024-01-01,2024-06-02)

   SELECT daterange_inclusive('[2024-01-01,2024-06-01]');
      daterange_inclusive
   -------------------------
   [2024-01-01,2024-06-01]
   
FAQ