包含范围之间的包含范围

Inclusive range between an inclusive range

我正在尝试将包含的时间间隔与另一个进行比较,以便我可以确定第一个时间间隔是在内部还是第二个时间间隔的一半,反之亦然。 这是我编写的代码:

SELECT count(*)
  FROM dates
 WHERE dates.hourA1 
   AND dates.hourA2 BETWEEN dates.hourB1 AND dates.hourB2

这段代码就像维恩图一样工作。一方面,我收集了 hourA1 和 hourA2 之间的所有时间,另一方面收集了 hourB1 和 hourB2 之间的所有时间。我想要的是计算每个集合中有多少记录有共同的小时数。

提前致谢:)

所以这应该有效:

SELECT COUNT(*)
  FROM dates d
 WHERE d.hourA1 BETWEEN d.hourB1 AND d.hourB2
    OR d.hourA2 BETWEEN d.hourB1 AND d.hourB2
    OR d.hourB1 BETWEEN d.hourA1 AND d.hourA2
    OR d.hourB2 BETWEEN d.hourA1 AND d.hourA2

我还为您添加了一个带有一些测试数据的 SQLFiddle: http://sqlfiddle.com/#!6/99fc3/1

SELECT COUNT(*)
FROM dates
WHERE dates.hourA1 BETWEEN dates.hourB1 AND dates.hourB2
OR dates.hourA2 BETWEEN dates.hourB1 AND dates.hourB2
OR dates.hourB1 BETWEEN dates.hourA1 AND dates.hourA2
OR dates.hourB2 BETWEEN dates.hourA1 AND dates.hourA2