MySQL - сервер :использование BETWEEN в таблице?

StackOverflow https://stackoverflow.com/questions/2547275

  •  23-09-2019
  •  | 
  •  

Вопрос

У меня есть таблица, которая включает название некоторой группы учащихся, время урока, названия дней, такие как Расписание.Я использую 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 филд, это должно сработать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top