2017-09-30 29 views
-1

我正在检测时间冲突,但我被困在天冲突。这是我的表如何匹配mysql中结果中的单个字符?

INSERT INTO yourTable (starttime, endtime, day) 
VALUES 
    ('09:00:00', '11:00:00', 'MT'), 
    ('10:00:00', '12:00:00', 'M'), 
    ('06:00:00', '10:00:00', 'MTW'), 
    ('06:00:00', '10:00:00', 'ThFS'), 
    ('11:00:00', '12:00:00', 'S'), 
    ('15:00:00', '16:00:00', 'F'), 
    ('06:00:00', '09:00:00', 'M'); 

,这是查询

SELECT DISTINCT 
    t1.starttime, 
    t1.endtime, 
    t1.day 
FROM yourTable t1 
LEFT JOIN yourTable t2 
    ON 
     (t1.starttime > t2.starttime AND t1.starttime < t2.endtime) OR 
     (t1.endtime > t2.starttime AND t1.endtime < t2.endtime) 
WHERE 
    t2.starttime IS NOT NULL; 

结果

starttime endtime day 
09:00:00 11:00:00 MT 
10:00:00 12:00:00 M 
06:00:00 10:00:00 MTW 
06:00:00 10:00:00 ThFS 
11:00:00 12:00:00 S 
06:00:00 09:00:00 M 

,应该是

starttime endtime day 
    09:00:00 11:00:00 MT 
    10:00:00 12:00:00 M 
    06:00:00 10:00:00 MTW 
    06:00:00 09:00:00 M 

我想MATCH AGAINST但并不好。谢谢您的帮助。 顺便说一句:我尝试使用LIKE,但仍然无法在MTW和TTh天。

+0

可怕的桌子设计!规范你的数据库!解释日可以包括多个平日,由他们的第一封信给您的听众!拆分为每行单日,并使用周日数而不是周日名称。添加一个ID字段(整数自动增量)作为主键。然后,您可以在当天加入并过滤冲突。 – BitAccesser

+0

对不起,表格设计。我以某个地方为例。谢谢你的想法。我会在成功后发布更新。 – stoow

回答

0

已解决。感谢BitAccesser。我将日期转换为数字,然后通过php,我使用similar_text函数来比较结果。

相关问题