QUARTER_CEIL
Описание
Округляет значение DATE, DATETIME, TIMESTAMP_NS или TIMESTAMPTZ вверх до ближайшей границы заданного периода в кварталах. Если указано время начала отсчёта, период рассчитывается относительно этого времени.
Синтаксис
QUARTER_CEIL(<datetime>)
QUARTER_CEIL(<datetime>, <origin>)
QUARTER_CEIL(<datetime>, <period>)
QUARTER_CEIL(<datetime>, <period>, <origin>)
Параметры
| Параметр | Описание |
|---|---|
<datetime> | Значение для округления вверх. Поддерживаются DATE, DATETIME, TIMESTAMP_NS и TIMESTAMPTZ. |
<period> | Длительность периода в кварталах. Имеет тип INT и задаёт количество кварталов в каждом периоде |
<origin> | Начало отсчёта периода. Поддерживаются DATE, DATETIME, TIMESTAMP_NS и TIMESTAMPTZ; значение по умолчанию — 0001-01-01 00:00:00. |
Примечания:
- Если период не указан, используется период в 1 квартал
- Если период не является положительным целым числом, функция возвращает NULL
- Округление всегда выполняется в сторону будущего
- Временная часть возвращаемого значения всегда равна 00:00:00
Возвращаемое значение
Для входного значения типа TIMESTAMP_NS возвращается значение типа TIMESTAMP_NS с фиксированной точностью до девяти знаков в дробной части секунды. Результаты проверяются на соответствие диапазону возвращаемого типа; для TIMESTAMP_NS используется диапазон [1677-09-21 00:12:43.145224192, 2262-04-11 23:47:16.854775807].
Если параметр <origin> не указан для входного значения типа TIMESTAMP_NS, указанное в документации начало отсчёта по умолчанию используется только как внутренняя точка отсчёта для выравнивания периодов; оно не обязано входить в диапазон значений, допустимых для хранения в TIMESTAMP_NS.
Если <datetime> имеет тип DATE, возвращаемый тип — DATE.
Если <datetime> имеет тип DATETIME, возвращаемый тип — DATETIME.
Если <datetime> имеет тип TIMESTAMP_NS, возвращаемый тип — TIMESTAMP_NS с девятью знаками в дробной части секунды.
Если <datetime> имеет тип TIMESTAMPTZ, возвращаемый тип — TIMESTAMPTZ.
Возвращаемое значение представляет собой дату и время, округлённые вверх. Временная часть результата устанавливается в 00:00:00.
Примеры
С началом отсчёта '0001-01-01 00:00:00' и периодами по 5 / 4 квартала возвращается ближайшее к входной дате начало следующего периода.
SELECT QUARTER_CEIL("2023-07-13 22:28:18", 5), QUARTER_CEIL("2023-07-13 22:28:18", 4);
+----------------------------------------+----------------------------------------+
| QUARTER_CEIL("2023-07-13 22:28:18", 5) | QUARTER_CEIL("2023-07-13 22:28:18", 4) |
+----------------------------------------+----------------------------------------+
| 2024-10-01 00:00:00.000000 | 2024-01-01 00:00:00.000000 |
+----------------------------------------+----------------------------------------+
С началом отсчёта '2022-01-01 00:00:00' и периодами по 2 / 4 квартала возвращается ближайшее к входной дате начало следующего периода.
SELECT QUARTER_CEIL("2023-03-13 22:28:18", 2, "2022-01-01 00:00:00"), QUARTER_CEIL("2023-07-13 22:28:18", 4, "2022-01-01 00:00:00");
+---------------------------------------------------------------+---------------------------------------------------------------+
| QUARTER_CEIL("2023-03-13 22:28:18", 2, "2022-01-01 00:00:00") | QUARTER_CEIL("2023-07-13 22:28:18", 4, "2022-01-01 00:00:00") |
+---------------------------------------------------------------+---------------------------------------------------------------+
| 2023-07-01 00:00:00 | 2024-01-01 00:00:00 |
+---------------------------------------------------------------+---------------------------------------------------------------+
Рекомендации по использованию
См. также date_ceil