Проблема в том, что вы не можете ссылаться на ваш вычисляемый столбец по имени в одном запросе.Поэтому вам нужно использовать внутренний подзапрос:
SELECT `id`,`name`,`start_date`,`end_date`, `status`
FROM (
SELECT `id`,`name`,`start_date`,`end_date`,
CASE
WHEN SYSDATE() < `start_date` THEN 'WAITING'
WHEN SYSDATE() >= `start_date` AND SYSDATE() <= `end_date` THEN 'START'
WHEN SYSDATE() >= `end_date` THEN 'END'
END `status`
FROM teams) AS T
WHERE `status` = 'START';
Или вы можете продублировать логику в предложении WHERE
, но большинство людей предпочитают этого не делать.Также обратите внимание, что это решение позволяет просто изменить предложение WHERE
, чтобы получить другие наборы результатов:
WHERE status = 'WAITING'
WHERE status = 'END'
Вам не нужно возиться с логикой после того, как она настроена таким образом.