MS SQL-Server

Knowledge Base

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);