Если это нужно сделать в БД, то ...
Просто показываю код недели. Вы можете извлечь начальную и конечную дату для каждого времени аналогичным образом, но я бы, вероятно, сохранил бы их в локальной db-таблице и выбрал бы их вместо объединения. Например:
объявить таблицу @weeks (weekno int, начинается datetime, заканчивается datetime)
объявлять @now datetime;
set @now = getdate ();
Declare @previousWeek int;
set @previousWeek = datepart (week, (dateadd (week, -1, @now)));
Declare @nextWeek int;
set @nextWeek = datepart (week, (dateadd (week, 1, @now)));
Declare @weekNow int;
set @weekNow = datepart (week, @now);
выберите @previousWeek WeekNo
союз
выберите @weekNow
союз
выберите @ nextWeek