AsviS
@AsviS
начинающий

Как сделать проверку даты?

Доброго времени суток, у меня вопрос:
есть таблица:
id  |  name  |  start_date  |  end_date
1   |  act1    |  2018-02-15 00:00:00  |  2018-04-05 00:00:00
1   |  act2    |  NULL  |  2018-04-23 00:00:00
1   |  act3    |  2018-02-12 00:00:00  |  2018-02-28 00:00:00
1   |  act4    |  2018-03-11 00:00:00  |  2018-04-05 00:00:00
1   |  act5    |  2018-02-15 00:00:00  |  2018-02-20 00:00:00


это таблица событий
как мне правильно сделать выводы из нее если start_date пустой или уже наступил при этом end_date не наступил то это Active Action, если start_date не наступил то это Upcoming Action, если end_date уже прошел то это Ended Action

что то искал в гугле но подобных решений не нашел!
Заранее спасибо за ответ!
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
usdglander
@usdglander
Yippee ki-yay
SELECT 'Active Action' as `type`, * FROM `table` WHERE `start_date` IS NULL OR (NOW() BETWEEN `start_date` AND `end_date`)
UNION
SELECT 'Upcoming Action' as `type`, * FROM `table` WHERE `start_date` > NOW();

Как то так...

upd: Сам не проверял, возможно где то есть ошибка, но суть передал.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Попробуйте использовать if или case, например:
SELECT CASE <variable> WHEN <value>      THEN <returnvalue>
                       WHEN <othervalue> THEN <returnthis>
                                         ELSE <returndefaultcase>
       END AS <newcolumnname>
FROM <table>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы