Vous pouvez simplement utiliser la fonction DATEPART
avec dayofyear
valeur datepart.
EDIT: Honnêtement, il y a un problème de limite dans ma réponse précédente (merci beaucoup à Damien): par exemple. 2010-12-25
et 2011-01-07
=> la différence devrait être inférieure à 30 jours, mais DATEPART(dayofyear, @date) - DATEPART(dayofyear, [Birthday]) < 30
état sauterait cet enregistrement. Donc, j'ai ajouté un contition supplémentaire à ma réponse:
DATEPART(dy, @d) - DATEPART(dy, [Birthday]) < 30 OR
(
DATEPART(mm, @d) = 12 AND
DATEPART(dy, DATEADD(m, 1, @d)) - DATEPART(dy, DATEADD(m, 1, [Birthday])) < 30
)
il ajoute un mois à la chaque date dans le cas où la partie de mois de la première date est Décembre et compare la différence.
Cela ne pose-t-il pas des problèmes aux alentours de décembre/janvier? –
@Damien_The_Unbeliever: merci beaucoup, il y avait vraiment ce problème; mis à jour ma réponse. – Alex