Jak utworzyć czas letni Funkcja Start i koniec w SQL Server

Muszę utworzyć funkcję na serwerze SQL, która zwraca czas rozpoczęcia czasu letniego i czas letni datetime.

Znalazłem kilka przykładów w sieci, jednak wszyscy używają pierwszej daty marca i 1 listopada, a to nie jest technicznie poprawne.

Czas letni zaczyna się o 2 nad ranem w drugą niedzielę marca i kończy o 2 nad ranem w pierwszą niedzielę listopada.

Zacząłem od poniższego kodu, ale jestem pewien, że jest błędny. Każda pomoc jest mile widziana! :)

DECLARE @DSTSTART DATETIME

SELECT @DSTSTART = CASE WHEN 
DATEPART(MONTH, SYSDATETIME()) = 3
AND DATEPART(weekday, SYSDATETIME()) = 1
AND DATEDIFF(week,dateadd(week, datediff(week, 0, dateadd(month, datediff(month, 0, SYSDATETIME()), 0)), 0), SYSDATETIME() - 1) = 2
AND DATEPART(HOUR, SYSDATETIME()) = 2
THEN SYSDATETIME()
END
RETURN (@DSTSTART)
END
GO

questionAnswers(4)

yourAnswerToTheQuestion