Générer une séquence de dates en T-SQL : méthodes efficaces
Cet article explore des techniques efficaces pour créer une série de dates consécutives dans une plage spécifiée à l'aide de T-SQL, compatible avec les versions 2005 et ultérieures de SQL Server. Bien qu'une boucle WHILE
soit une approche possible, elle peut être moins efficace pour des plages de dates plus larges. Une méthode supérieure utilise la spt_values
table système.
Pour les plages de dates allant jusqu'à 2 047 jours, la requête T-SQL suivante fournit une solution efficace :
<code class="language-sql">DECLARE @startDate DATETIME, @endDate DATETIME; SET @startDate = GETDATE(); SET @endDate = DATEADD(day, 100, @startDate); SELECT DATEADD(day, number, @startDate) AS IncrementalDate FROM (SELECT number FROM master.dbo.spt_values WHERE [type] = 'P') AS NumberSequence WHERE DATEADD(day, number, @startDate) < @endDate;</code>
Cette requête exploite la séquence numérique dans spt_values
pour générer la série de dates. Il ajoute chaque numéro de la séquence au @startDate
, créant ainsi des dates incrémentielles. La clause WHERE
garantit que les dates générées se situent dans la plage souhaitée, définie par @startDate
et @endDate
. Cette approche évite les limitations de performances souvent associées aux WHILE
méthodes de boucle itératives.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!