MS SQL-Server > Lösungen, Rezepte, Tipps, Fragen
Zweiten Dienstag im Monat berechnen
DECLARE
@
Date
DATETIME;
SET
@
Date
= GETDATE();
DECLARE
@FirstDayOfMonth DATETIME
SET
@FirstDayOfMonth = DATEFROMPARTS(
YEAR
(@
Date
),
MONTH
(@
Date
), 1);
-- Berechne ein von @@DATEFIRST unabhängiges Ergebnis - liefert immer:
-- 1 = Montag
-- 2 = Dienstag
-- 3 = Mittwoch
-- 4 = Donnerstag
-- 5 = Freitag
-- 6 = Samstag
-- 7 = Sonntag
DECLARE
@IndependentDayOfWeek
INT
;
SET
@IndependentDayOfWeek = (@@DATEFIRST + DATEPART(weekday, @FirstDayOfMonth) - 1) % 7;
SET
@IndependentDayOfWeek =
CASE
WHEN
@IndependentDayOfWeek = 0
THEN
7
ELSE
@IndependentDayOfWeek
END
;
-- Sonntag ist 0 bei der obigen Berechnung und wird auf die SQL interne Nummer 7 umgestellt
SELECT
DATEADD(d, 7 + (7 - (@IndependentDayOfWeek - 2)) % 7, @FirstDayOfMonth);