有必要在数据库中找到日期间隔与请求的间隔不相交的所有记录。 假设请求的间隔包括开始日期和结束日期。有关记录间隔的数据在date_ranges列中。问题在于日期间隔上的数据格式不方便,它们以这种格式存储: “ YYYY-MM-DD-YYYY-MM-DD / YYYY-MM-DD-YYYY-MM-DD / YYYY-MM-DD-YYYY-MM-DD”。如何创建查询以检索记录而不跨越日期?
示例:
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