Вы можете просто использовать функцию DATEPART
с dayofyear
значением datepart.
РЕДАКТИРОВАТЬ: честно, в моем предыдущем ответе есть проблема границы (большое спасибо Дэмиен ): например, 2010-12-25
и 2011-01-07
=> разница должна быть менее 30 дней, но условие DATEPART(dayofyear, @date) - DATEPART(dayofyear, [Birthday]) < 30
пропустит эту запись. Поэтому я добавил дополнительный ответ к своему ответу:
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
)
добавляет один месяц к каждой дате в случае, когда частью месяца первой даты является декабрь, и сравнивает разницу.