Выберите вхождение на следующий день из таблицы - PullRequest
0 голосов
/ 03 апреля 2020

enter image description here

Это моя структура базы данных дней настольных игр. Каждая игра заканчивается в 8:00 вечера. Здесь все идентификаторы игр одинаковы. Итак, теперь я хочу сделать запрос по идентификатору игры следующим образом: если сегодня понедельник, а до 20:00, то он получит только game_days со значением day = 'Monday'. По истечении 8:00 вечера будет отображаться строка со значением дня = «среда» до среды 20:00, а после 20:00 будет отображаться строка со значением дня = «пятница» до пятницы 8: 00:00, а затем снова после пятницы в 8:00 вечера будет отображаться понедельник ...

Так что будет запрос для этого?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Я думаю, вы просто хотите сместить дату на 4 часа. Один из методов:

where date(updated_at + interval 4 hour) = curdate()

Я предполагаю, что updated_at - это столбец, на который вы хотите сослаться, но это может быть любой столбец даты / времени.

Я предпочитаю express это как:

where updated_at >= curdate() - interval 4 hour and
      updated_at < curdate() + interval 1 day - interval 4 hour

Эта версия может использовать индекс для столбца даты / времени.

0 голосов
/ 03 апреля 2020

Пожалуйста, попробуйте это (обновлено на основе комментариев, замените имя_таблицы соответствующим именем таблицы - это ваша БД):

SELECT * 
FROM `table_name`
WHERE day = (
    SELECT t3.day FROM `table_name` as t3
    LEFT JOIN (
        SELECT HOUR(NOW()), 
        CASE
            WHEN HOUR(NOW()) <= 19 THEN DAYNAME(NOW() + INTERVAL t.p DAY)
            ELSE DAYNAME(NOW() + INTERVAL (t.p + 1) DAY)
        END AS day, 
        CASE
            WHEN HOUR(NOW()) <= 19 THEN  t.p
            ELSE t.p + 1
        END as p
        FROM (
            SELECT 0 as p
            UNION SELECT 1 as p 
            UNION SELECT 2 as p
            UNION SELECT 3 as p
            UNION SELECT 4 as p
            UNION SELECT 5 as p
            UNION SELECT 6 as p
        ) t
   ) t2 on t3.day = t2.day
   ORDER BY t2.p ASC LIMIT 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...