Wenn es dein Projekt mit der Firebird Datenbank betrifft, dann würde ich das die Datenbank machen lassen:
Stored Proc:
SQL-Code:
create or alter procedure sp_weeks (
von date,
bis date)
returns (
woche smallint,
datum date)
as
begin
woche = 1;
while (:von <= :bis) do
begin
datum = :von;
von = :von + 1;
suspend;
if (extract(weekday from :datum) = 0) then
woche = :woche + 1;
end
end
Abfrage:
SQL-Code:
select
'Woche '||t.woche
, min(t.datum)
, max(t.datum)
from sp_weeks(current_date, current_date + 50) t
group by t.woche
Frank