MySQL - сервер :использование BETWEEN в таблице?
Вопрос
У меня есть таблица, которая включает название некоторой группы учащихся, время урока, названия дней, такие как Расписание.Я использую C # с MySQL, и я хочу найти, какой урок происходит, когда пользователь нажимает кнопку из таблицы.
Я могу найти его, введя точное значение, как в таблице, например08:30 или 10:25.Но я хочу сделать это, получая системное время и проверяя, что оно находится между 08:30 и 10:25 или 10:25 и 12:30.Тогда я могу сказать, что это первый или второй урок.
У меня также есть таблица, включающая столбец Table_Time, содержащий 5 записей, подобных 08:20 , 10:25 , 12:20 и так далее.Могу ли я использовать, как :
select Lesson_Time
from mydb.clock
where Lesson_Time between (current time)-30 AND (current time)+30
Или я могу использовать оператор between между двумя столбцами (например, создать Lesson_Time_Start и Lesson_Time_End) и сравнить текущее время, например Lesson_Start_Time < current time < Lesson_End_Time
?
Редактировать: Точнее, проблема в том, как я могу проверить, текущее время - это какая запись
У меня есть таблица, похожая
Time_ID | Lesson_Time
1 08:30
2 10:25
3 12:20
4 14:15
5 16:10
И когда я нажимаю какую-то кнопку, я хочу проверить, соответствует ли текущее время, когда я нажал кнопку, какому Time_ID
Например, я нажал кнопку в 09: 15, и она должна выбрать 1th record , if I pressed button at 12:00 it must select 2
й рекорд.
Решение
Я бы попробовал что-то вроде этого.
select
Time_ID,
Lesson_Time
from
mydb.clock
where
Lesson_Time <= TIME(NOW())
order by
Lesson_Time DESC
limit 0, 1
Запрос ограничен записями времени урока до текущего времени, отсортированными по убыванию по времени, и возвращает только первую запись, которая должна быть той записью, которая вам нужна.(Однако учтите, что полночь может все усложнить.)
Другие советы
Я не совсем уверен, что вы хотите сделать, но я думаю, что вы ищете DATE_ADD и DATE_SUB DATE_ADD и DATE_SUB:
SELECT Lesson_Time from mydb.clock
WHERE Lesson_Time between DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND
DATE_ADD(NOW(), INTERVAL 30 MINUTE);
при условии, что Lesson_Time является правильным DATETIME
филд, это должно сработать.