SQL-ЗАПРОС для получения текущего периода, следующего периода и праздников в пределах на основе даты ввода

#mysql #join #union

Вопрос:

У меня есть таблица, в которой в основном есть поля:

 StartDate(DATE),  EndDate (DATE),  PayDay(DATE),  isHoliday(TINY INT),  Name (VAR CHAR)  

Таблица следует приведенной ниже схеме

 EndDate = DATE_ADD(dateStart, INTERVAL 13 DAY)  payDay = DATE_ADD(dateStart, INTERVAL 4 DAY)  Next StartDate = DATE_ADD(dateStart, INTERVAL 14 DAY);  

Требование состоит в том, что пользователь введет дату, на основе которой мне нужно найти период(от даты начала до даты окончания), к которому относится дата следующего периода(от даты начала до даты окончания), и праздники, которые наступают между обоими.

Я попытался выполнить следующий запрос :

 (SELECT AC.`EndDate`, @start_Date := AC.`StartDate`, AC.`Name`, AC.`Holiday`, AC.`PayDay`   FROM `AvailabilityCalendar` AC   WHERE "2021-12-22 00:00:00" BETWEEN StartDate AND EndDate)  UNION  (SELECT @end_Date := AC.`EndDate`, AC.`StartDate`, AC.`Name`, AC.`Holiday`, AC.`PayDay`   FROM `AvailabilityCalendar` AC   WHERE DATE_ADD(@sp_Date, INTERVAL 13 DAY) BETWEEN StartDate AND EndDate) UNION (SELECT @end_Date := AC.`EndDate`, AC.`StartDate`, AC.`Name`, AC.`Holiday`, AC.`PayDay`   FROM `AvailabilityCalendar` AC   WHERE AC.`StartDate` BETWEEN @start_Date AND @end_Date)  

что работает нормально, но у него есть несколько операторов SELECT и СОЕДИНЕНИЙ, и это не похоже на правильное решение. Пожалуйста, ознакомьтесь со структурой таблицы, прилагаемой

введите описание изображения здесь

Комментарии:

1. Пожалуйста, отредактируйте вопрос и добавьте данные в виде текста, а не изображения.