Maison > base de données > tutoriel mysql > Comment générer efficacement une séquence de dates en T-SQL ?

Comment générer efficacement une séquence de dates en T-SQL ?

Barbara Streisand
Libérer: 2025-01-11 20:08:43
original
621 Les gens l'ont consulté

How to Efficiently Generate a Sequence of Dates in T-SQL?

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>
Copier après la connexion

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 :

  • Simplicité : Cela ne nécessite aucune boucle ni calcul complexe.
  • Efficacité : Les requêtes utilisent des tables système, évitant ainsi la surcharge associée aux tables définies par l'utilisateur.
  • Évolutivité : Il peut gérer des plages de dates plus larges dans la limite de 2047 jours.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal