我有一个表,其中每行都有一个开始和结束日期时间。这些可以是任意短或长的跨度。SQL中的日期范围交集
我想查询具有两个开始和停止日期时间的所有行的交集的持续时间。
你怎么能在MySQL中做到这一点?
或者您是否必须选择与查询开始和结束时间相交的行,然后计算每行的实际重叠并将其与客户端相加?
举个例子,使用毫秒这样可以很清楚:
的某些行:
ROW START STOP
1 1010 1240
2 950 1040
3 1120 1121
而且我们想知道的总和时,这些行分别为1030和1100之间。
允许计算各行的重叠:
ROW INTERSECTION
1 70
2 10
3 0
所以在这个例子中的总和是80.
我很难理解你的问题。你能否举例说明一下。 – lexu 2010-05-05 07:30:45
像1-10,2-9,3-8这样的重叠的总和是多少? – aioobe 2010-05-05 07:39:56
@Will - 如果我正确读了你的话,你在示例#1中的交集不应该是30;交叉点((1010,1240),(1030,1100))= 70 – Unreason 2010-05-05 08:46:56