Ваше описание и примеры по-прежнему не совпадают, поэтому я могу привести только очень обобщенный пример, основанный на вашем комментарии ...
Как добавить или вычесть интервал на основе оператора CASE ...
CASE
WHEN MINUTE(startTime) = 20 THEN DATE_ADD(startTime, -10 MINUTES)
WHEN MINUTE(startTime) = 50 THEN DATE_ADD(startTime, 20 MINUTES)
ELSE NULL
END AS newStartTime,
CASE
WHEN MINUTE(startTime) = 20 THEN DATE_ADD(endTime, -10 MINUTES)
WHEN MINUTE(startTime) = 50 THEN DATE_ADD(endTime, 20 MINUTES)
ELSE NULL
END AS newEndTime
Вы можете иметь столько предложений WHEN
, сколько пожелаете, изменив условия MINUTE(startTime) = 20
на все, что захотите, и получите все, что захотите в предложении THEN
.Затем, если у вас есть дело, которое не соответствует ни одному из предложений WHEN
, укажите желаемый результат в предложении ELSE
.
Вам нужно будет повторить логику для startTime
иendTime
поля.