Das wird es tun:
%Vor%Vielleicht am besten, wenn ich das kaputt mache. Die NEXT_DAY-Funktion gibt den nächsten Tag zurück, der ein (in diesem Fall Freitag) nach Datum ist.
Um den ersten Freitag nach d1 zu finden, wäre also:
%Vor%Aber wenn d1 ein Freitag ist, der den folgenden Freitag zurückgibt, passen wir an:
%Vor%Ähnlich wie den letzten Freitag bis einschließlich d2 finden wir:
%Vor%Das Subtrahieren der 2 ergibt eine Anzahl von Tagen: 0 wenn sie das gleiche Datum sind, 7 wenn sie eine Woche auseinander liegen und so weiter:
%Vor%In Wochen umrechnen:
%Vor%Schließlich, wenn sie das gleiche Datum haben, bekommen wir 0, aber wirklich gibt es 1 Freitag, und so weiter, so fügen wir eins hinzu:
%Vor%Ich muss meine zwei Cent einwerfen, um einen Kalendertisch zu benutzen. (Es ist ein Zwang.)
%Vor%Tot einfach zu verstehen. Nutzt die Vorteile von Indizes.
Vielleicht sollte ich eine 12-Schritte-Gruppe starten. Kalendertisch anonym.
Siehe:
Warum sollte ich eine Zusatzkalendertabelle in Erwägung ziehen?
Der Artikelcode ist speziell für SQL Server, aber die Techniken sind auf den meisten SQL-Plattformen portierbar.
Wenn eine Kalendertabelle vorhanden ist, kann Ihre Abfrage so einfach wie
sein %Vor%Wählen Sie ((DATEDIFF (dd, @ a, @ b)) + DATEPART (dw, (@ a-6))) / 7