我有一個表,其中每行都有一個開始和結束日期時間。這些可以是任意短或長的跨度。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