MySQL найти записи между временем открытия и закрытия - PullRequest
1 голос
/ 16 апреля 2020

У нас есть несколько ресторанов, открытых и закрытых в определенные c дни недели. У нас есть рестораны, которые открываются на ночь. например, время ресторанов: (10:00 AM Monday - 05:00 AM Tuesday)

Я пытаюсь выполнить следующий запрос SQL. Но количество возвращаемых записей равно нулю.

База данных:

CREATE TABLE `restaurants_hours` (
  `id` int(11) NOT NULL,
  `shop_id` int(11) unsigned NOT NULL,
  `day_of_week` varchar(255) NOT NULL,
  `open_time` time NOT NULL,
  `close_time` time NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `restaurants_hours` (`id`, `shop_id`, `day_of_week`, `open_time`, `close_time`)
VALUES
(1, 1, 'sunday', '10:00:00', '05:00:00'),
(2, 1, 'monday', '10:00:00', '05:00:00'),
(3, 1, 'tuesday', '10:00:00', '05:00:00'),
(4, 1, 'wednesday', '10:00:00', '05:00:00'),
(5, 1, 'thursday', '10:00:00', '05:00:00'),
(6, 1, 'friday', '10:00:00', '05:00:00'),
(7, 1, 'saturday', '10:00:00', '05:00:00');

QUERY

SELECT id, open_time, close_time, day_of_week FROM restaurants_hours WHERE
(((close_time > open_time) AND (FIND_IN_SET('thursday', day_of_week)) 
AND (open_time <= '12:40') AND (close_time >= '12:40') )
OR
((close_time <= open_time) AND (FIND_IN_SET('wednesday', day_of_week)) AND (close_time > '12:40')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...