Перейти к содержимому
Последнее обновление

QUARTER_FLOOR

Описание​

Округляет значение даты и времени вниз до ближайшей границы заданного периода в кварталах. Если указана точка отсчёта времени, период рассчитывается относительно неё.

Синтаксис​

QUARTER_FLOOR(<datetime>)
QUARTER_FLOOR(<datetime>, <origin>)
QUARTER_FLOOR(<datetime>, <period>)
QUARTER_FLOOR(<datetime>, <period>, <origin>)

Параметры​

ПараметрОписание
<datetime>Значение даты и времени для округления вниз, тип DATE или DATETIME
<period>Длительность периода в кварталах, тип INT. Задаёт число кварталов в каждом периоде
<origin>Точка отсчёта периода, тип DATE или DATETIME, значение по умолчанию 0001-01-01 00:00:00

Примечания:

  • Если период не указан, используется период длительностью 1 квартал
  • Если период не является положительным целым числом, функция возвращает NULL
  • Округление всегда выполняется в сторону прошлого
  • Время в возвращаемом значении всегда равно 00:00:00

Возвращаемое значение​

Если <datetime> имеет тип DATE, возвращаемое значение имеет тип DATE. Если <datetime> имеет тип DATETIME, возвращаемое значение имеет тип DATETIME. Время в результате устанавливается равным 00:00:00.

Примеры​

При отсчёте от '0001-01-01 00:00:00' и длительности периода 5 / 4 кварталов возвращается начало периода, ближайшее к входной дате.

SELECT QUARTER_FLOOR("2023-07-13 22:28:18", 5), QUARTER_FLOOR("2023-07-13 22:28:18", 4);
+-----------------------------------------+-----------------------------------------+
| QUARTER_FLOOR("2023-07-13 22:28:18", 5) | QUARTER_FLOOR("2023-07-13 22:28:18", 4) |
+-----------------------------------------+-----------------------------------------+
| 2021-01-01 00:00:00 | 2022-01-01 00:00:00 |
+-----------------------------------------+-----------------------------------------+

При использовании '2022-01-01 00:00:00' в качестве точки отсчёта и длительности периода 2 / 4 кварталов возвращается начало периода, ближайшее к входной дате.

SELECT QUARTER_FLOOR("2023-03-13 22:28:18", 2, "2022-01-01 00:00:00"), QUARTER_FLOOR("2023-07-13 22:28:18", 4, "2022-01-01 00:00:00");
+----------------------------------------------------------------+----------------------------------------------------------------+
| QUARTER_FLOOR("2023-03-13 22:28:18", 2, "2022-01-01 00:00:00") | QUARTER_FLOOR("2023-07-13 22:28:18", 4, "2022-01-01 00:00:00") |
+----------------------------------------------------------------+----------------------------------------------------------------+
| 2023-01-01 00:00:00 | 2022-01-01 00:00:00 |
+----------------------------------------------------------------+----------------------------------------------------------------+

Рекомендации по использованию​

См. также date_floor