Я много исследовал это, но не смог найти ничего похожего на мою проблему, поэтому я публикую сценарий для помощи и руководства по поиску метода - просто укажите мне правильное направление, если это возможно. В отличие от некоторых комментариев ниже, я не совсем знаю, как обеспечить минимальный воспроизводимый запрос, тем более что я не знаю, возможен ли он вообще.
У меня есть таблица mysql, которая содержит записи о событиях. Каждая запись определяет, когда событие должно начаться (startDate
) - пример: 4 сентября 2019 (среда). Событие должно повторяться каждую среду после этого, но есть только ОДНА основная запись события. eventFreq
указывает, как часто событие должно происходить.
eventFreq = 1 ; // every x day of week (every Wednesday)
eventFreq = 2 ; // every other x day of week (every other Monday)
eventFreq = 3 ; // every 3rd X day of month (every 3rd Tuesday)
Можно ли написать запрос mysql, который на основе основной записи startDate
и eventFreq
даст мне все случаи среды в следующем месяце (IE: все среды в марте 2020 года)? Или запрос, который даст мне СЛЕДУЮЩУЮ среду в зависимости от текущей текущей даты. Эти запросы должны были бы выяснить, что startDate
является средой для начала, чтобы определить будущие.
Если он определит будущую среду в марте 2020 года, он вернет основную запись события плюс дополнительное поле для указания c будущей среды.
Основная запись события: ID, имя-события, eventDescription, startDate, eventFreq, blah1, blah2, blah3
Если среда марта была найдено, что он вернет всю запись с добавленным столбцом nextDate
как одну из сред в марте. таким образом, он вернул бы мне те же четыре записи с добавленным столбцом nextDate
.
Грубо:
IF DATE == Wednesday, then Date as nextDate
OR IF Wednesday BETWEEN FirstDayOfMonth AND LastDayOfMonth
OR IF Wednesday, then Next Wednesday after today
Возвращает одну и ту же основную запись X раз с добавленным столбцом nextDate
:
ID,eventName,eventDescription,startDate,eventFreq,blah1,blah2,blah3,nextDate // March 4 2020
ID,eventName,eventDescription,startDate,eventFreq,blah1,blah2,blah3,nextDate // March 11 2020
ID,eventName,eventDescription,startDate,eventFreq,blah1,blah2,blah3,nextDate // March 18 2020
ID,eventName,eventDescription,startDate,eventFreq,blah1,blah2,blah3,nextDate // March 25 2020
В настоящее время я извлекаю все события и использую PHP для обработки всех событий startDate
и eventFreq
(каждую среду) для определения будущих сред. Код обширный и сложный для всех сценариев ios - поэтому я надеялся, что хороший запрос mysql просто вернет правильные будущие даты, а затем все, что мне нужно сделать, это обработать результаты.
Можно ли этого достичь?