我有以下查询:
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
用于仅选择不会与其他计划发生冲突的计划。
这会产生:
但是,它从时间表以及 08:35:00 到 09:20 的时段中排除了
被排除。 7:50:00
和 08:35:00
: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')
但是这个返回 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')
)
关于mysql - x 和 y 值之间有 2 列 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100588/