Я пытаюсь написать хранимую процедуру, чтобы выбрать сотрудников, у которых есть дни рождения, которые наступают.SQL Select Предстоящие дни рождения
SELECT * FROM Employees WHERE Birthday > @Today AND Birthday < @Today + @NumDays
Это не будет работать, потому что год рождения является частью день рождения, так что если мой день рождения был '09 -18-1983' , который не будет падать между '09 -18-2008' и '09 - 25-2008.
Есть ли способ игнорировать поле даты года и просто сравнивать месяц/сутки?
Это будет выполняться каждое утро утра, чтобы предупредить руководителей о предстоящих днях рождения, чтобы они, возможно, охватили новые годы.
Это рабочее решение, которое я создал, благодаря Kogus.
SELECT * FROM Employees
WHERE Cast(DATEDIFF(dd, birthdt, getDate())/365.25 as int)
- Cast(DATEDIFF(dd, birthdt, futureDate)/365.25 as int)
<> 0
Я не уверен, как отредактировать ваш ответ, но вместо того, чтобы делить на 365, вам нужно разделить на 365.25, а затем бросить на int. Високосный год, снова закручивая все. – Crob 2008-09-17 14:51:35
Спасибо, ты совершенно прав, и там тоже была ошибка. Возможность редактировать сообщения других людей имеет определенный рейтинг репутации. Проверьте эту ссылку: http://stackoverflow.com/questions/18557/how-does-stackoverflow-work-the-unofficial-faq – JosephStyons 2008-09-17 14:55:17
Очень приятно, спасибо – Magpie 2012-01-10 15:39:55