我已經從這個拿到了下一個問題了:Comparing date ranges比較兩個日期範圍時一個範圍內有一個範圍開始日期
的解決方案,比較兩個範圍是查詢:
SELECT * 從時間 WHERE NOT(RANGE_START> @check_period_end OR RANGE_END < @check_period_start)
我有額外的問題。我允許人們輸入一段時間。準確地說,他們輸入一個持續時間(即1周)和一系列開始日期(即5月的前2周),我必須找出他們指定的範圍內是否有一週的時間段。
天真的解決方案是在我的範圍內每天運行上述查詢。因此 - 爲了檢查一個月內的3天插槽,我必須運行30個查詢。有沒有更高效的方法?
對於獎勵積分 - 我正在使用Django。使用Django ORM有沒有好的解決方案?
編輯 - 爲了簡化問題,我想我已經把它變成了另一個問題!我的實際問題是找到'自由空白'。我認爲這會使下面的一些'純SQL'方法無效。我認爲這將是明智的start a new question而不是混淆這一個。其他人可能會發現這個問題對目前的形式有用。
想象一下,我正在一個月內檢查3天。有什麼比運行30個查詢更好嗎? (我會將這一點加入到原始問題中) – 2009-04-22 17:48:33
我一直在跟蹤你,直到你說:'得到一個接近的日期子集,然後從該列表中選擇'。你能澄清嗎? – 2009-04-22 18:10:55
MyThing.objects.filter(startDate__gte = aDate,startDate__lte = aDate + duration)是應包含您要查找的範圍的對象的子集。 – 2009-04-22 18:42:52