我正在創建一個訂閱管理系統,並且需要生成未來2年即將開票日期的列表。我已經能夠使用generate_series能得到相應的日期爲這樣:Postgres generate_series排除日期範圍
SELECT i::DATE
FROM generate_series('2015-08-01', '2017-08-01', '1 month'::INTERVAL) i
最後一步我需要從計算中排除特定的日期範圍。這些排除的日期範圍可以是任何時間範圍。此外,不應將它們考慮到generate_series的時間範圍內。
例如,假設我們將日期範圍從'2015-08-27'排除在'2015-09-03'之外。得到的generate_series應排除日當週從計算,基本上推動所有未來一個月結算1週日期未來:
2015-08-01
2015-09-10
2015-10-10
2015-11-10
2015-12-10
刪除答案,沒有解決真正困難的部分。排除範圍很容易。困難的部分是調整它重複發生的模式,在最後增加更多時間來補償跳過的時間範圍,然後調整重複日期。你將需要一個遞歸CTE或一個過程來做到這一點我認爲,因爲通過補償排除在最後補充的行本身可以被排除,所以我們必須擴展更多的行來測試... –
I也有感覺你的每月賬單結合不好,允許在幾天或幾周範圍內排除,因爲不是每個月都是相同的天數。您可能需要考慮每30天結算,而不是每個月。 –
你的例子看起來是錯誤的。日期提前9天,但時間間隔只有7天。 –