有两种写法
-- 时间段为a,b

第一种

SELECT
* 
FROM
table
WHERE
( start_time >= a AND end_time <= b ) 
OR ( end_time >= a AND end_time <= b ) 
OR ( start_time >= a AND start_time <= b ) 
OR ( start_time <= a AND end_time >= b )

where情况1被情况2、3包含,所以可以简写为下面写法

SELECT
* 
FROM
table
WHERE
( end_time >= a AND end_time <= b ) 
OR ( start_time >= a AND start_time <= b ) 
OR ( start_time <= a AND end_time >= b )

第二种

SELECT
* 
FROM
table
WHERE
NOT ( start_time > b OR end_time < a ) 
AND end_time_type = 1

标签: none

添加新评论