Maison >base de données >tutoriel mysql >Comment générer des plages de dates dans SQL Server 2008 ?
Générer une plage de dates à l'aide de SQL
Dans SQL Server 2008, remplir une table pour qu'elle contienne une plage de dates comprise entre deux dates spécifiées est un défi pour les administrateurs de bases de données. En réponse à ce problème, une solution pratique pour SQL Server 2008 est proposée ci-dessous.
Cette requête utilise un tableau contenant une séquence de nombres pour générer une date. La première ligne de la requête déclare deux variables, @StartDate et @EndDate, représentant respectivement le début et la fin de la plage de dates souhaitée.
La sous-requête entre parenthèses génère une séquence de nombres allant de 1 au nombre de lignes de la table sys.columns. Cette sous-requête remplace une table de nombres ou une table de décomptes. Le numéro résultant est stocké dans la colonne nbr.
La clause WHERE filtre les nombres pour inclure uniquement ceux qui se situent dans la plage de dates spécifiée. Plus précisément, il vérifie si le nbr - 1 est inférieur ou égal à la différence entre la date de début et la date de fin. Puisque la numérotation des lignes commence à 1, ce calcul est ajusté.
Pour chaque numéro qualifiant, la requête utilise la fonction DATEADD pour incrémenter @StartDate de la valeur nbr - 1. Le résultat est un tableau contenant toutes les dates de la date de début à la date de fin, une ligne pour chaque jour.
Une alternative à l'utilisation d'une table de comptage
Si une table de comptage est disponible, elle peut remplacer la sous-requête dans la requête d'origine, ce qui donne une solution plus efficace et plus concise. Les tableaux de comptage contiennent une série de nombres consécutifs, ce qui en fait une source idéale pour générer des plages de dates. Une requête utilisant la table de comptage est fournie dans la réponse à titre de référence.
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!