Dieses Blog durchsuchen

Mittwoch, 21. Juni 2017

Liste von allen Datumswerten zwischen zwei Daten generieren

Manchmal benötigt man für Abfragen eine Liste von allen Datumswerten in einem definierten Bereich.
Hat man keine spezielle Kalendertabelle zur Verfügung, kann man sich eine solche Liste schnell und performant mit Hilfe einer systemtabelle generieren. 

Mein Ansatz für diese Problemstellung ist folgender:

DECLARE @StartDate date = '2016-12-31'
DECLARE @EndDate date = GETDATE()

SELECT DATEADD(DAY,number+1,@StartDate) [Date]
  FROM master..spt_values
 WHERE type = 'P'
   AND DATEADD(DAY,number+1,@StartDate) < @EndDate  


Das Statement generiert eine Datumsliste bis zum aktuellen Datum.
Falls wer eine einfachere oder performantere Lösung hat, einfach ein Kommentar hinterlassen.