TetonSig : http://www.sqlmag.com/article/tsql3/datetime-calculations-part-3
, (@AsOfDate), :
SELECT DATEADD(day, DATEDIFF(day,0, @AsOfDate-1) /7*7, 0);
1/1/1900 @AsOfDate . /7 * 7 , 1/1/1900 (), @AsOfDate. -1 @AsOfDate. 1, @AsOfDate , "" .
, 7 :
SELECT DATEADD(d, DATEDIFF(day,0, @AsOfDate-1) /7*7, 0)+7;
Voila! @AsOfDate. , (0) - . [DayOfWeek], , . ClassDayOfWeek 0s :
DATEADD(d, DATEDIFF(d, [ClassDayOfWeek], @AsOfDate-1)/7*7, [ClassDayOfWeek])+7
ClassDayOfWeek, , @@datefirst. :
DATEDIFF(d, 0, StartDate)%7
0 Mon, 6 Sun, [ClassDayOfWeek]. , 0-6 - 1/1/1900-1/7/1900, int.
DATEADD(d, DATEDIFF(d, DATEDIFF(d, 0, StartDate)%7, @AsOfDate-1)/7*7, DATEDIFF(d, 0, StartDate)%7)+7
:
SELECT *
FROM tbl_Class cs
INNER JOIN tbl_Enrollment sce ON cs.pk_ClassID = sce.fk_ClassID
WHERE ...
AND sce.StartDate < DATEADD(d,
DATEDIFF(d,
DATEDIFF(d, 0, cs.StartDate)%7,
@AsOfDate-1)/7*7,
DATEDIFF(d, 0, cs.StartDate)%7)+7