The obvious way is something like:SELECT alumni_id, email FROM tblalumni_memberWHERE MONTH(Birth_Date) * 100 + DAY(Birth_Date) BETWEEN MONTH(DATEADD(day, -15, CURRENT_TIMESTAMP)) * 100 + DAY(DATEADD(day, -15, CURRENT_TIMESTAMP)) AND MONTH(DATEADD(day, 15, CURRENT_TIMESTAMP)) * 100 + DAY(DATEADD(day, 15, CURRENT_TIMESTAMP))ORDER BY MONTH(Birth_Date) * 100 + DAY(Birth_Date)
However, as functions on a column stop the use of an index (Google SARGABLE)it may be more efficient to use a number/tally table. (Google Tally Table);WITH CurrentYearAS( SELECT DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), -15) AS StartDate ,DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), 15) AS EndDate),NumbersAS( SELECT [number] FROM [master].dbo.spt_values WHERE [type] = 'P' -- assuming no-one aged over 120 AND [number] <= 120),YearRangesAS( SELECT DATEADD(year, -N.number, C.StartDate) AS StartDate ,DATEADD(year, -N.number, C.EndDate) AS EndDate FROM CurrentYear C CROSS JOIN Numbers N)SELECT A.alumni_id, A.email FROM tblalumni_member A JOIN YearRanges Y ON A.Birth_Date BETWEEN Y.StartDate AND Y.EndDateORDER BY MONTH(A.Birth_Date) * 100 + DAY(A.Birth_Date)