Я хочу, чтобы иметь возможность рассчитать, если что-то находится в пределах диапазона и вернуть все результаты.Запрос в течение нескольких дней и часов
У нас есть таблица, которая запланировала еженедельные мероприятия. Каждая строка таблицы имеет уникальный идентификатор, номер дня и номер часа.
id (auto int) | dayNumber (int from 0 to 6) | hourNumber (int from 0 to 23)
Основываясь на этой таблице, мы можем определить, когда событие должно произойти в расписании. Например, запись дняNumber = 2 и hourNumber = 3 означает, что событие запланировано на вторник в 3 часа ночи.
Часть, которую мне трудно найти, заключается в том, что мне нужно запустить запрос, чтобы получить ряд запланированных событий. Поэтому я перейду в минимум dayNumber и hourNumber и максимум dayNumber и hourNumber. Мои ожидаемые результаты будут соответствовать каждой соответствующей записи в этом диапазоне.
Более легкий случай, когда минимум меньше максимального. Например (в PHP),
$minimumDayNumber = 1; $minimumHourNumber = 3;
$maximumDayNumber = 5; $maximumHourNumber = 6;
Где она становится все более сложным, когда я хочу, чтобы найти диапазон с субботы по вторник. Для этого переменные выглядели бы примерно так: $ minimumDayNumber = 6; $ minimumHourNumber = 3; $ maximumDayNumber = 2; $ maximumHourNumber = 6;
Используя эти входы, мне нужно будет запросить базу данных и найти все записи в этом диапазоне. Должен быть хороший алгоритм, чтобы либо построить запрос, либо хороший запрос, чтобы сделать это достаточно прямо.
Это кажется легким на бумаге, и я сделал это с диапазонами дат (поля фактической даты), но я просто не могу заставить это работать правильно. Заранее благодарю вас за помощь и сообщите мне, если вам потребуется дополнительное разъяснение.
Вы только сохраняете данные за одну неделю и очищаете старые данные? – Diver
Здесь мы не регистрируем данные. Мы сохраняем только еженедельное расписание. Таким образом, вся эта таблица содержит список запланированных периодов недели для события. Более длинный ответ: в этой таблице есть дополнительное поле, которое я удалил, чтобы упростить вопрос. Это идентификатор устройства.Таким образом, эта таблица служит для поддержания расписания для сотен устройств. Событие одинаково для всех устройств, поэтому нет поля, объясняющего, какое событие должно иметь место. – Terry
Разделение ваших дат на отдельные значения приводит к болезненным запросам, например. вы не можете просто «время от времени» и должны выполнять «dayfield> $ day и hourfield <$ hour», что затем исключает много действительных дат/времени из-за чрезмерного сравнения. –