Mysql 在x和y值之间有两列
我有以下疑问:Mysql 在x和y值之间有两列,mysql,sql,Mysql,Sql,我有以下疑问: SELECT DISTINCT T1.SCHEDULE_START, T1.SCHEDULE_END, T2.SCHEDULE_TYPE_ID, T2.SCHEDULENAME FROM schedule_intermediate T1 JOIN schedule_type T2 ON T1.SCHEDULE_TYPE_ID = T2.SCHEDULE_TYPE_ID WHERE ( SELECT COUNT(*) FROM reservation R JOIN sche
SELECT DISTINCT T1.SCHEDULE_START, T1.SCHEDULE_END, T2.SCHEDULE_TYPE_ID, T2.SCHEDULENAME
FROM schedule_intermediate T1 JOIN schedule_type T2 ON T1.SCHEDULE_TYPE_ID = T2.SCHEDULE_TYPE_ID
WHERE (
SELECT COUNT(*) FROM reservation R JOIN schedule_intermediate SI ON R.SCHEDULEID_GENERATED = SI.SCHEDULEID_GENERATED
WHERE RESOURCEID = 456
AND SI.SCHEDULEID_GENERATED = 4
AND R.RESERVATIONDUEDATE = '2014-08-06 07:50:00'
AND R.RESERVATIONEXPIREDATE = '2014-08-06 08:35:00'
HAVING T1.SCHEDULE_START != DATE_FORMAT('2014-08-06 07:50:00', '%H:%i:%s')
AND T1.SCHEDULE_END != DATE_FORMAT('2014-08-06 08:35:00', '%H:%i:%s')
) = 0
ORDER BY T1.SCHEDULE_START
它用于仅选择与其他计划没有冲突的计划
这将产生:
但是,它从时间表中排除了7:50:00
和08:35:00
,并且排除了08:35:00至09:20:00
期间
我想排除提供的范围之间的时间段,但是,我需要包括提供的具体时间(
07:50:00和08:35:00
),只排除该范围内的分钟数(从7:51:00到8:34:00
)
有没有办法做到这一点
我已经试过了:
HAVING T1.SCHEDULE_START <= DATE_FORMAT('2014-08-06 07:50:00', '%H:%i:%s')
AND T1.SCHEDULE_END >= DATE_FORMAT('2014-08-06 08:35:00', '%H:%i:%s')
采用T1.SCHEDULE\u START=DATE\u格式('2014-08-06 08:35:00','%H:%i:%s')
但这一个返回0列,同样反转符号也会产生相同的结果。我想不出别的办法来做这件事 是否要排除在指定时间内开始或结束的所有结果?你的问题不清楚。如果是,那么相关部分可以是
AND (
T1.SCHEDULE_START <= DATE_FORMAT('2014-08-06 07:50:00', '%H:%i:%s')
OR T1.SCHEDULE_START >= DATE_FORMAT('2014-08-06 08:35:00', '%H:%i:%s')
)
AND (
T1.SCHEDULE_END <= DATE_FORMAT('2014-08-06 07:50:00', '%H:%i:%s')
OR T1.SCHEDULE_END >= DATE_FORMAT('2014-08-06 08:35:00', '%H:%i:%s')
)
和(
T1.SCHEDULE\u START=DATE\u格式('2014-08-06 08:35:00','%H:%i:%s')
)
及(
T1.SCHEDULE_END=DATE_格式('2014-08-06 08:35:00','%H:%i:%s')
)
我想排除指定范围内的时间段。这意味着在07:50:00和08:35:00之间开始的任何内容都不应显示。但是,如果时段开始或结束于限值(7:50:00或8:35:00),则应显示它们。