#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.