Как получить записи на основе времени и окончания в mysql

Я столкнулся с одной проблемой для извлечения записей из таблицы. Моя таблица выглядит следующим образом: -

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 в этом случае я не хочу фильтровать какую-либо строку

Привет, какой тип данных у ваших столбцов opening_time и closing time, пожалуйста

RiggsFolly 18.12.2020 19:19

тип данных только время 06:30:00

kunal 18.12.2020 19:20

Почему 2 одинаковых предложения, определяющие время в обоих запросах?

RiggsFolly 18.12.2020 19:21

@RiggsFolly проверь сейчас

kunal 18.12.2020 19:23

И эти запросы, как сейчас, по-прежнему генерируют строки, которые вы нам показываете?

RiggsFolly 18.12.2020 19:23

я хочу, когда пользователь выполняет поиск с момента: - 9:15:00 и время окончания 12:30:00, я хочу получать только 1-ю и 2-ю строки, и если пользователь выполняет поиск с 13:45:00 и 15:30:00 на этом случай, когда я не хочу фильтровать какую-либо строку

kunal 18.12.2020 19:25

Возможно, вам придется установить SQL Fiddle

RiggsFolly 18.12.2020 19:31

Давайте продолжим обсуждение в чате.

kunal 18.12.2020 19:33

@kunal Почему не 3-я строка для времени начала 9:15:00 и времени окончания 12:30:00?

forpas 18.12.2020 19:36

извините, что дублируется, копируя Извинения за это

kunal 18.12.2020 19:37

я обновил сейчас

kunal 18.12.2020 19:38
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
11
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше состояние должно быть:

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 В каком случае это не работает? Разместите примеры данных, где это не работает.

forpas 18.12.2020 19:44

выберите * из timing, где market_id = 1 и день = «пятница» и время закрытия >= «12:30:00» и время открытия <= «09:15:00» для этого запроса я хочу 1-ю и 2-ю строку, но этот запрос возвращает пустой

kunal 18.12.2020 19:44

@kunal То, что ты делаешь, не мой вопрос. Это мой запрос: select * from timing where market_id = 11 and day = 'Friday' and closing_time >= '09:15:00' and opening_time <= '12:30:00'

forpas 18.12.2020 19:46

@kunal проверьте демо в моем ответе.

forpas 18.12.2020 19:46

@kunal вы понимаете, что вам нужно сравнивать время закрытия с временем начала и время открытия с временем окончания, а не наоборот?

forpas 18.12.2020 19:49

Другие вопросы по теме