Я столкнулся с одной проблемой для извлечения записей из таблицы. Моя таблица выглядит следующим образом: -
id market_id opening_time closing_time day p_slot
1 1 06:30:00 09:30:00 Friday 1
2 1 09:30:00 13:30:00 Friday 0
3 1 17:30:00 19:30:00 Friday 0
4 1 19:30:00 23:30:00 Friday 0
Я хочу фильтровать данные на основе opening_time
и времени закрытия. Я пробовал ниже запрос
select *
from `timing`
where market_id = 1
and day = 'Friday'
and (opening_time <= '13:45:00' or closing_time <= '15:30:00')
and (opening_time <= '15:30:00' or closing_time <= '15:30:00')
Но когда я запускаю этот запрос, я получаю ниже ответ, который неверен
id market_id opening_time closing_time day p_slot
1 1 06:30 09:30 Friday 1
2 1 09:30 13:30 Friday 0
Но да, если пользователь ищет запрос ниже, тогда выше вывод правильный
select *
from `timing`
where market_id = 1
and day = 'Friday'
and (opening_time <= '09:15:00' or closing_time <= '12:30:00')
and (opening_time <= '12:30:00' or closing_time <= '12:30:00')
Может ли кто-нибудь помочь мне решить проблему? Мне нужен результат, который существует в диапазоне opening_time
и closing_time
.
Примечание: - я хочу, когда пользователь выполняет поиск с момента времени: - 9:15:00 и время окончания 12:30:00, я хочу получать только 1-ю и 2-ю строки, и если пользователь выполняет поиск с 13:45:00 и 15:30: 00 в этом случае я не хочу фильтровать какую-либо строку
тип данных только время 06:30:00
Почему 2 одинаковых предложения, определяющие время в обоих запросах?
@RiggsFolly проверь сейчас
И эти запросы, как сейчас, по-прежнему генерируют строки, которые вы нам показываете?
я хочу, когда пользователь выполняет поиск с момента: - 9:15:00 и время окончания 12:30:00, я хочу получать только 1-ю и 2-ю строки, и если пользователь выполняет поиск с 13:45:00 и 15:30:00 на этом случай, когда я не хочу фильтровать какую-либо строку
Возможно, вам придется установить SQL Fiddle
Давайте продолжим обсуждение в чате.
@kunal Почему не 3-я строка для времени начала 9:15:00 и времени окончания 12:30:00?
извините, что дублируется, копируя Извинения за это
я обновил сейчас
Ваше состояние должно быть:
closing_time >= from_time and opening_time <= end_time:
Нравиться:
select *
from `timing`
where market_id = 1
and day = 'Friday'
and closing_time >= '13:45:00' and opening_time <= '15:30:00';
Смотрите демо.
@kunal В каком случае это не работает? Разместите примеры данных, где это не работает.
выберите * из timing
, где market_id = 1 и день = «пятница» и время закрытия >= «12:30:00» и время открытия <= «09:15:00» для этого запроса я хочу 1-ю и 2-ю строку, но этот запрос возвращает пустой
@kunal То, что ты делаешь, не мой вопрос. Это мой запрос: select * from timing where market_id = 11 and day = 'Friday' and closing_time >= '09:15:00' and opening_time <= '12:30:00'
@kunal проверьте демо в моем ответе.
@kunal вы понимаете, что вам нужно сравнивать время закрытия с временем начала и время открытия с временем окончания, а не наоборот?
Привет, какой тип данных у ваших столбцов
opening_time
иclosing time
, пожалуйста