При создании аналитических дашбордов понадобилось агрегировать значения и сравнивать их значения по границам кварталов. Поиск границ кварталов решил созданием простого представлении к которому обращаюсь из запросов:
CREATE OR REPLACE VIEW `SHOW_QUARTER` AS
SELECT
(CASE QUARTER(NOW())
WHEN 4 THEN DATE_FORMAT(NOW(), '%Y-10-01')
WHEN 1 THEN DATE_FORMAT(NOW(), '%Y-01-01')
WHEN 2 THEN DATE_FORMAT(NOW(), '%Y-04-01')
WHEN 3 THEN DATE_FORMAT(NOW(), '%Y-07-01')
END) AS `CURRENT_QUARTER_BEGIN`,
(CASE QUARTER(NOW())
WHEN 4 THEN DATE_FORMAT(NOW(), '%Y-12-31')
WHEN 1 THEN DATE_FORMAT(NOW(), '%Y-03-31')
WHEN 2 THEN DATE_FORMAT(NOW(), '%Y-06-30')
WHEN 3 THEN DATE_FORMAT(NOW(), '%Y-09-30')
END) AS `CURRENT_QUARTER_END`,
(CASE QUARTER(NOW())
WHEN 1 THEN DATE_FORMAT((NOW() - INTERVAL 1 YEAR), '%Y-10-01')
WHEN 2 THEN DATE_FORMAT(NOW(), '%Y-01-01')
WHEN 3 THEN DATE_FORMAT(NOW(), '%Y-04-01')
WHEN 4 THEN DATE_FORMAT(NOW(), '%Y-07-01')
END) AS `PREVIOUS_QUARTER_BEGIN`,
(CASE QUARTER(NOW())
WHEN 1 THEN DATE_FORMAT((NOW() - INTERVAL 1 YEAR), '%Y-12-31')
WHEN 2 THEN DATE_FORMAT(NOW(), '%Y-03-31')
WHEN 3 THEN DATE_FORMAT(NOW(), '%Y-06-30')
WHEN 4 THEN DATE_FORMAT(NOW(), '%Y-09-30')
END) AS `PREVIOUS_QUARTER_END`
Результат: