Как сделать запрос MYSQL для получения записей без пересечения дат? - PullRequest
0 голосов
/ 03 ноября 2018

Необходимо найти в базе данных все записи, чьи интервалы дат не пересекаются с запрошенным интервалом. Предположим, что запрошенный интервал состоит из start_date и end_date. Данные о интервалах записей находятся в столбце date_ranges. Проблема в том, что данные по интервалам дат имеют неудобную форму, они хранятся в этой форме: "ГГГГ-ММ - ДД-ГГГГ-ММ-ДД / ГГГГ-ММ - ДД-ГГГГ-ММ-ДД / ГГГГ-ММ - ДД-ГГГГ-ММ-ДД". Как создать запрос для извлечения записей без пересечения дат?

Пример:

  CREATE TABLE IF NOT EXISTS `test` (
  `id` int(6) unsigned NOT NULL,
  `content` varchar(200) NOT NULL,
  `date_ranges` mediumtext NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `test` (`id`, `content`, `date_ranges`) VALUES
  ('1', 'content1', '2018-10-30 - 2018-11-05/2018-11-12 - 2018-11-14/2019-01-15 - 2019-08-22'),
  ('2', 'content2', '2018-12-15 - 2018-12-17/2018-11-15 - 2018-11-22'),
  ('3', 'content3', '2018-09-30 - 2018-11-19/2018-11-11 - 2018-11-16/2019-01-16 - 2019-08-18/2018-10-30 - 2018-11-05'),
  ('4', 'content4', '2018-10-30 - 2018-11-05'),
  ('5', 'content5', '');

sqlfiddle.com / #! 9 / 4b2dcf / 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...