Wygeneruj serię przedziałów tygodniowych dla danego miesiąca
W bazie danych Postgres 9.1 próbuję wygenerować serię tygodni dla danego miesiąca, ale z pewnymi ograniczeniami. Potrzebuję wszystkich tygodni, aby zacząć w poniedziałek i zostać wyciętym, gdy zaczną lub zakończą się w innym miesiącu.
Przykład:
Na luty 2013 r. Chcę wygenerować taką serię:
start
------------------------
2013-02-01 00:00:00+00
2013-02-04 00:00:00+00
2013-02-11 00:00:00+00
2013-02-18 00:00:00+00
2013-02-25 00:00:00+00
Zapytanie, które mam teraz, wygląda tak:
SELECT GREATEST(date_trunc('week', dates.d),
date_trunc('month',dates.d)) as start
FROM generate_series(to_timestamp(1359676800),to_timestamp(1362095999), '1 week') as dates(d)
To zapytanie daje mi pierwsze 4 tygodnie, ale brakuje mu tygodnia od 25-tego. Czy można zdobyć ostatni tydzień?