Hin und wieder braucht man jedes einzelne Datum in einem Zeitraum in SQL. Oft wird eine Tabelle mit Zahlen dafür verwendet (nur ein Wert von 1…) verwendet.
Eine Alternative ist dieses kleine Select mit dem jedes Datum in einem Zeitraum gefunden werden kann.
DECLARE @StartDate as Date =convert(date,'18.09.23',4)
DECLARE @EndDate as Date =convert(date,'24.09.23',4)
SELECT TOP (DATEDIFF(DAY, @StartDate, @EndDate) + 1)
Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, convert(date,@EndDate,4))
FROM sys.all_objects a
CROSS JOIN sys.all_objects b
Grundlegend tut das Select nichts anderes als einen Cross Join über alle objekte in der Datenbank zu machen um eine möglichst große Zahlreihe zu erstellen. Diese Zahlenreihe wird anhand der Row_Number Funktion. Dann muss nur noch das Datum ermittelt werden.
SQL geht ganz einfach 🙂
Schreibe einen Kommentar