我试图将包含的小时间隔与另一个进行比较,以便我可以判断第一个是在内部还是在第二个中间的一半,反之亦然。 这是我的代码:
SELECT count(*)
FROM dates
WHERE dates.hourA1
AND dates.hourA2 BETWEEN dates.hourB1 AND dates.hourB2
此代码的工作方式类似于维恩图。一方面,我收集了hourA1和hourA2之间的所有小时数,另一方面收集了hourB1和hourB2之间的所有小时数。我想要的是计算每个集合中有多少个记录有几个小时。
提前致谢:)
答案 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