Как получить статус между двумя датами в базе данных MySQL? - PullRequest
0 голосов
/ 06 октября 2019

У меня такой запрос, чтобы получить статус без добавления полей.

SELECT * ,
      IF(DATEDIFF(STR_TO_DATE(end_date, "%Y-%m-%d"), CURDATE())<=0,"End","Running") status 
FROM agreements

запрос выполняется, но я хочу добавить статус, если дата окончания меньше 3 дней, тогда статус покажет «будет закончен»

, поэтому будет 3 статусав запросе END, RUNNING, будет END

1 Ответ

2 голосов
/ 06 октября 2019

Вы можете использовать CASE ..WHEN операторов;также ваше использование STR_TO_DATE(end, '%Y-%m-%d') не является необходимым, поскольку функция DATEDIFF() учитывает только часть даты для расчета:

SELECT * ,
       CASE WHEN DATEDIFF(end_date, CURDATE()) <= 0 THEN 'End' 
            WHEN DATEDIFF(end_date, CURDATE()) < 3 THEN 'Will Be End' 
            ELSE 'Running'
       END status
FROM agreements
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...