Heim > Datenbank > MySQL-Tutorial > Wie erstelle ich eine Datumsreihe zwischen zwei gegebenen Daten in SQL Server?

Wie erstelle ich eine Datumsreihe zwischen zwei gegebenen Daten in SQL Server?

Barbara Streisand
Freigeben: 2025-01-15 09:07:43
Original
182 Leute haben es durchsucht

How to Generate a Series of Dates Between Two Given Dates in SQL Server?

Datumsbereich in SQL Server generieren

In SQL Server kann das Auffüllen eines Datumsbereichs zwischen zwei bestimmten Daten in einer Tabelle mithilfe mehrerer Methoden vereinfacht werden. Eine effiziente Methode besteht darin, eine Zahlentabelle oder Zähltabelle zu verwenden, um eine Reihe von Ganzzahlen zu generieren.

Basierend auf der Anforderung, die Tabelle mit Daten zwischen „01.09.2011“ und „10.10.2011“ zu füllen, kann die folgende Lösung implementiert werden:

<code class="language-sql">DECLARE @StartDate DATE = '20110901'
, @EndDate DATE = '20111010'

SELECT  DATEADD(DAY, nbr - 1, @StartDate)
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS nbr
          FROM      sys.columns c
        ) nbrs
WHERE   nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)</code>
Nach dem Login kopieren

Dieser Code generiert eine Liste mit ganzen Zahlen von 1 bis zur Differenz zwischen dem Startdatum und dem Enddatum. Indem von jeder ganzen Zahl 1 subtrahiert und zum Startdatum addiert wird, wird eine Tabelle mit Daten erstellt, die mit „2011-09-01“ beginnen und mit „2011-10-10“ enden.

Alternativ kann zur Vereinfachung der Berechnungen auch eine nullbasierte Zähltabelle verwendet werden:

<code class="language-sql">CREATE TABLE [dbo].[nbrs](
    [nbr] [INT] NOT NULL
) ON [PRIMARY]

INSERT INTO dbo.nbrs (nbr)
SELECT nbr-1
FROM ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS nbr
          FROM      sys.columns c
        ) nbrs

DECLARE @StartDate DATE = '20110901'
      , @EndDate DATE = '20111010'

SELECT  DATEADD(DAY, nbr, @StartDate)
FROM    nbrs
WHERE   nbr <= DATEDIFF(DAY, @StartDate, @EndDate)</code>
Nach dem Login kopieren

Durch die dauerhafte Speicherung einer Zahlentabelle in der Datenbank können Sie diese für zukünftige Abfragen wiederverwenden, wodurch Unterabfragen und Rekursionen überflüssig werden und Leistung und Effizienz gewährleistet werden.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Datumsreihe zwischen zwei gegebenen Daten in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage