Manière la plus facile de remplir une table temporaire avec des dates entre et y compris 2 paramètres de date
Quel est le moyen le plus facile pour remplir une table temporaire avec les dates, y compris et entre les 2 paramètres de date. Je n'ai besoin que le 1er jour du mois dates.
Si par exemple @StartDate = '2011-01-01' et @EndDate = '2011-08-01'
Alors je veux cette retourné dans le tableau
2011-01-01
2011-02-01
2011-03-01
2011-04-01
2011-05-01
2011-06-01
2011-07-01
2011-08-01
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne même si l' @date de début n'est pas le premier du mois. Je pars du principe que si c'est pas le début du mois, vous voulez commencer avec le premier du mois suivant. Autrement, enlever l' +1.:
Fonctionne même si le @date de début n'est pas le premier jour du mois par le retour à la première journée du mois de StartDate
ceci est testé dans SQL 2008 R2
Résultat:
Solution:
Résultats:
DATEDIFF(MONTH, 0, @StartDate) + v.number
au lieu deDATEDIFF(MONTH, 0, DATEADD(MONTH, v.number, @StartDate))
.Fait intéressant, il est plus rapide de créer à partir de données énuméré comme par cet article.
Sur ma machine, c'est environ 60% plus rapide avec de grandes plages de dates. La récursivité méthode peut remplir 2000 ans d'une valeur de données dans environ 3 secondes si, et semble beaucoup plus agréable, donc je n'ai pas vraiment recommander cette méthode d'incrémentation de jours.
De Correction pour les nuls dates: