Quartalsberechnungen

Heute mal ein kleiner Ausflug in die Datumsarithmetik um Anfang und Ende eines Quartals zu berechnen.

Aufgabe war es Anfang und Ende des vorherigen Quartals zu berechnen. Im folgenden gebe ich zuerst das Endergebnis aus, bevor ich im zweiten SQL die einzelnen Berechnungsschritte verdeutlichen möchte.

SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE())-1,0) AS FirstDayOfLastQuarter
, DATEADD(qq,DATEDIFF(qq,0,GETDATE()),-1) AS LastDayOfLastQuarter
, DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0) AS FirstDayOfQuarter
, DATEADD(qq,DATEDIFF(qq,0,GETDATE())+1,-1) AS LastDayOfQuarter ;

Das Ergebnis sieht dann wie folgt aus:

Hier nun die einzelnen Schritte um zu verdeutlichen, wie man zu dem Ergebnis kommt:

SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) , 0) AS Heute
, DATEDIFF(qq,0,GETDATE()) AS [Quartale Seit Anfang = X]
, CAST(0 AS DATETIME) AS Anfang
, DATEADD(qq,DATEDIFF(qq,0,GETDATE())-1,0) AS [Anfang Plus X-1 Quartale]
, DATEADD(qq,DATEDIFF(qq,0,GETDATE()),-1) AS [Anfang Plus X Quartale -1 Tag]
, DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0) AS [Anfang Plus X Quartale +0 Tage]
, DATEADD(qq,DATEDIFF(qq,0,GETDATE())+1,-1) AS [Anfang Plus X+1 Quartale -1 Tag];

Hier kommt das Ergebnis: