2010-02-12 49 views
0

我需要計算完全或部分落在一組時間範圍內的天數。在幾個時間範圍內計算天數

範圍不重疊,但可能在同一天有很多。

例如,給定:

+---------------------+---------------------+ 
    | time_start   | time_end   | 
    +---------------------+---------------------+ 
    | 2009-12-10 23:59:00 | 2009-12-11 01:38:00 | 
    | 2009-12-13 15:40:00 | 2009-12-13 15:45:00 | 
    | 2009-12-13 15:45:00 | 2009-12-13 15:50:00 | 
    | 2009-12-13 15:53:00 | 2009-12-13 15:56:00 | 
    | 2009-12-14 17:08:00 | 2009-12-14 17:12:00 | 
    | 2009-12-16 07:23:00 | 2009-12-18 14:32:00 | 
    +---------------------+---------------------+

結果應該是7(天10,11,13,14,16,17和18)。

任何暗示如何在MySQL中實現這一點將不勝感激。

回答

0

我不是一個MYSQL開發,但在MSSQL我會

  • 建立一個日期表(也有說1900和2100之間的每個日的記錄表,至少足以輕鬆覆蓋範圍你正在看)。
  • 做一個從表中加入以上日期表,其中TIME_START和TIME_END
  • 之間dates_table.date再算上天

這雖然關鍵是日期表的不同數量。

希望這能讓你開始。

+0

順便說一句,你顯然也需要去掉你的日期時間,以獲得獨特的工作。在Google上查找日期表上的很多內容。 – CResults 2010-02-12 12:10:52

+0

我不想創建日期表,但我找不到任何理智的方法來避免它。謝謝。 – Figo 2010-02-18 11:38:14

+0

我知道,它'感覺'錯了,你會認爲會有這樣做的內置方式。然而,在寫了大量與空酒店房間相對應的航班相匹配的代碼之後,其唯一方法就是高效完成工作。 – CResults 2010-02-18 14:09:36