Utilisation d'un serveur SQL 2000. Si la date de début est 06/23/2008
et la date de fin est 06/30/2008
Comment afficher toutes les dates entre deux dates données dans SQL
Puis-je besoin de la sortie de la requête comme
06/23/2008
06/24/2008
06/25/2008
.
.
.
06/30/2008
Je créé un nom de table comme nombre entier qui a une colonne, les valeurs de la colonne sont 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 j'utilisé le dessous mentionné requête
essayé Query
SELECT DATEADD(d, H.i * 100 + T .i * 10 + U.i, '" & dtpfrom.Value & "') AS Dates
FROM integers H
CROSS JOIN integers T
CROSS JOIN integers U
order by dates
La requête ci-dessus n'affiche que 999 dates. 999 Dates signifie (365 + 365 + 269) Dates uniquement. Supposons que je souhaite sélectionner plus de 3 ans (du 01/01/2003 au 01/01/2008). La requête ci-dessus ne devrait pas convenir.
Comment modifier ma requête? Ou toute autre requête est disponible pour la condition ci-dessus.
S'il vous plaît veuillez me fournir la requête.
Ceci est l'approche idéale pour pré-2005 parce que vous ne pouvez pas utiliser CTE - voir les commentaires dans cette question pour plus de détails: http://stackoverflow.com/questions/1478951/tsql-generate-a-resultset-of -incrementing-dates/1479028 # 1479028 –
Cette boucle sera beaucoup plus lente que l'utilisation d'une table Numbers traditionnelle, comme décrit dans ma réponse. Si c'est une chose unique, ce serait OK à utiliser. Toutefois, si vous générez plusieurs plages de dates, utilisez une méthode sans boucle plus efficace. –
Oui - mais vous n'avez pas besoin d'une table de nombres supplémentaires! Et pour jsut 10 ou 20 lignes, je ne sais pas à quel point la différence sera. –