Поиск по дню-месяцу в datetime без non-sargable
Допустим, у нас есть таблица TABLE, содержащая поле BDATE типа datetime , куда записаны даты рождения клиентов. По этому полю создан некластерный индекс.
Мне нужно найти тех, у кого сегодня день рождения.
DECLARE @DAY INT = DAY( GETDATE())
DECLARE @MONTH INT = MONTH( GETDATE())
SELECT T.*
FROM TABLE AST
WHERE MONTH(T.BDATE) = @MONTH AND DAY(T.BDATE) = @DAY
Приведённый код скатится с индекс скан за счёт того, что я беру функцию от индексированного столбца.
При этом, не брать их как будто бы нельзя, тк нас интересует совпадение дня-месяца, а не полной даты (т.е. если у человека дата рождения 01.01.1991 мы не сможем определить его как именнинника, просто взяв getdate() поскольку получим актульный год)
Подскажите, пожалуйста, как решить эту проблему?
p.s. MS SQL SERVER
p.s.s. я предполагаю, что такие задачи должны прогнозироватсья на этапе создания таблиц и по-хорошему, в таблице должно быть int-поле содержащее код сегодняшнего дня по дате-месяцу. Но мы предполгаем, что так не сделано.