Heim > Datenbank > MySQL-Tutorial > Wie kann eine Datumsfolge innerhalb eines bestimmten Bereichs effizient generiert werden?

Wie kann eine Datumsfolge innerhalb eines bestimmten Bereichs effizient generiert werden?

Mary-Kate Olsen
Freigeben: 2025-01-12 10:03:43
Original
735 Leute haben es durchsucht

How to Efficiently Generate a Sequence of Dates within a Given Range?

Datumssequenz innerhalb des angegebenen Bereichs generieren

Frage:

Wie kann ich alle Daten in einem bestimmten Bereich effizient abrufen und in einem Cursor speichern?

Lösung:

Datumstabelle verwenden

Datumstabellen bieten eine einfache und unkomplizierte Möglichkeit, Daten abzurufen. Falls verfügbar, verwenden Sie eine Abfrage wie:

<code class="language-sql">DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT  Date
FROM    dbo.Calendar
WHERE   Date >= @MinDate
AND     Date < @MaxDate;</code>
Nach dem Login kopieren

Sequenz dynamisch generieren

Wenn Sie keine Datumstabelle haben, können Sie die folgende Abfrage verwenden, um eine Datumssequenz zu generieren:

<code class="language-sql">DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT  TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
        Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate)
FROM    sys.all_objects a
        CROSS JOIN sys.all_objects b;</code>
Nach dem Login kopieren

Vermeiden Sie die Verwendung von Cursorn

Um die Leistung zu verbessern, sollten Sie die Verwendung einer sammlungsbasierten Alternative anstelle von Cursorn in Betracht ziehen. Um beispielsweise Mengen für einen bestimmten Artikel und ein bestimmtes Datum abzurufen:

<code class="language-sql">DECLARE @ToDate DATE = '20140428';

SELECT  TOP 1 date, it_cd, qty 
FROM    T
WHERE   it_cd = 'i-1'
AND     Date <= @ToDate
ORDER BY Date DESC;</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann eine Datumsfolge innerhalb eines bestimmten Bereichs effizient generiert werden?. 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