php выбор и отображение информации из sql по минутам, часам, дням

У меня есть быстрый вопрос для кого-то, кто может сказать мне, как сделать мой сценарий
У меня есть этот стол

id  name            day     hour    min
1   Test event1     *       *       30
2   Test event2     *       *       40
3   Test event3     *       14      15
4   Test event4     15      18      10
5   Test event5     21      *       8

* Средства будут работать все время в эти минуты. Ex event5 будет работать только на день 21 в любой час в минуту 8.

То, что я хочу, чтобы показать на моей странице является следующим событием » имя » и «время» ex:

    Next Event:
Eventname hour:minut

например, если мы находимся в день 14 в час * и мин 32, чтобы показать событие, которое будет следующим (в этом случае event2)

если мы находимся в день 14 в час 14 и мин 6, чтобы показать event3
если мы находимся в день 21 в час * и мин 3, чтобы показать test5

и так далее.

Заранее спасибо.

1 ответ

  1. Пытаться

    SELECT id, name, 
      CASE WHEN day = '*' THEN DAYOFMONTH(NOW()) ELSE day END day,
      CASE WHEN hour = '*' THEN HOUR(NOW()) ELSE hour END hour,
      CASE WHEN `min` = '*' THEN MINUTE(NOW()) ELSE `min` END `min`
      FROM table1 t 
     WHERE (day >= DAYOFMONTH(NOW()) OR day = '*') 
       AND (hour >= HOUR(NOW()) OR hour = '*')
       AND (`min` >= MINUTE(NOW()) OR `min` = '*')
     ORDER BY day = '*', day,
       hour = '*', hour,
       `min` = '*', `min`
     LIMIT 1;
    

    Учитывая ваш набор тестовых данных и текущее время даты 2016-09-30 02:18: 58 выход будет

    / id / имя / день / час / минута |
    |----|-------------|-----|------|-----|
    | 1 / Test event1| 30 | 2 | 30 |
    

    Вот SQLFiddle