包容性范围之间的包容性范围

时间:2017-06-24 13:52:10

标签: mysql sql intervals between hour

我试图将包含的小时间隔与另一个进行比较,以便我可以判断第一个是在内部还是在第二个中间的一半,反之亦然。 这是我的代码:

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

此代码的工作方式类似于维恩图。一方面,我收集了hourA1和hourA2之间的所有小时数,另一方面收集了hourB1和hourB2之间的所有小时数。我想要的是计算每个集合中有多少个记录有几个小时。

提前致谢:)

2 个答案:

答案 0 :(得分:0)

所以这应该有效:

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

我还为你添加了一个带有一些testdata的SQLFiddle: http://sqlfiddle.com/#!6/99fc3/1

答案 1 :(得分:0)

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