Générer un ensemble de résultats de date incrémentiels dans T-SQL
Dans SQL Server, générer une date définie entre une date de début et une date de fin spécifiées nécessite une solution efficace et optimisée. Une approche courante consiste à utiliser une boucle WHILE pour ajouter progressivement un jour à la date de début jusqu'à ce que la date de fin soit atteinte.
Cependant, pour les cas où la plage de dates est comprise dans 2047 jours, une autre méthode peut être utilisée. La requête T-SQL suivante utilise la table système spt_values :
<code class="language-sql">declare @dt datetime, @dtEnd datetime set @dt = getdate() set @dtEnd = dateadd(day, 100, @dt) select dateadd(day, number, @dt) from (select number from master.dbo.spt_values where [type] = 'P' ) n where dateadd(day, number, @dt) < @dtEnd</code>
Cette requête utilise la table spt_values , qui contient la plage de nombres de 0 à 2047. En filtrant le type « P », nous obtenons un ensemble de nombres consécutifs. Chaque numéro est ajouté à la date de début à l'aide de la fonction dateadd, produisant ainsi un ensemble de résultats de dates incrémentielles.
Cette méthode présente les avantages suivants :
Pour SQL Server 2008 et versions ultérieures, cette méthode fournit une solution efficace et simple pour générer des ensembles de dates croissants dans T-SQL.
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!