Как получить все данные, используя значение времени в MySQL?

#mysql #sql

Вопрос:

введите описание изображения здесь

 mealtime_id mealtime_name start_time end_time 1 Breakfast 07:00:00 10:00:00  2 Lunch 12:00:00 14:30:00  3 Dinner 18:00:00 20:00:00   

На изображении выше (или фрагменте) у меня есть столбцы start_time и end_time .

Как показать только текущее время 12:03:00 ?

Это то, что я имел в виду:

 SELECT * FROM ti_mealtimes WHERE start_time gt;= '12:03:00' AND end_time lt;= '12:03:00';  

Ожидаемым результатом должен быть обед. С 12:03:00 — с 12:00:00 до 14:30:00

 mealtime_id mealtime_name start_time end_time 2 Lunch 12:00:00 14:30:00   

Комментарии:

1. Большинству людей здесь нужны примерные табличные данные и ожидаемый результат в виде отформатированного текста, а не изображений. (И я слишком стар, чтобы читать этот крошечный текст с изображением…)

2. @jarlh я обновил сообщение с таблицей в тексте.

3. Намного лучше! А также покажите нам ожидаемый результат.

4. «Как показать, только если текущее время 12:03:00» — что это значит? Кроме того, почему вы отметили этот вопрос с помощью PHP, но не добавили к нему никакого PHP-кода?

Ответ №1:

Я думаю, ты хочешь:

 SELECT * FROM ti_mealtimes WHERE current_time between start_time and end_time  

Или, возможно, но, скорее всего, нет:

 SELECT * FROM ti_mealtimes WHERE '12:03:00' between start_time and end_time  

Комментарии:

1. Последнее работает. ` ВЫБЕРИТЕ * ИЗ ti_mealtimes, ГДЕ «12:03:00″ между временем начала и временем окончания»

Ответ №2:

Ваше утверждение » ГДЕ » противоречит. Вы предлагаете ему извлекать записи, в которых время начала не менее 12:03:00, и извлекать записи, в которых время окончания не старше 12:03:00

Вы пробовали МЕЖДУ НИМИ?

 SELECT  [mealtime_name] FROM  [tbl_name]  WHERE  [time] BETWEEN [start_time] AND [end_time]  

Это должно вывести строку, в которой [время] находится между двумя пределами столбца, включительно.

Комментарии:

1. В ОП говорится: «Ожидаемым результатом должен быть обед. Поскольку 12:03:00 находится между 12:00:00 и 14:30:00» Оглядываясь назад, первоначальное утверждение операции, вероятно, сработало бы, если бы они перевернули знаки (т. Е. Время начала lt;= значение времени и время окончания gt;= значение времени)

2. Это тоже работает. Ваш ответ похож на @jarlh.