Ich versuche, eine gespeicherte Prozedur zu schreiben, um Mitarbeiter auszuwählen, die bevorstehende Geburtstage haben.
SELECT * FROM Employees WHERE Birthday > @Today AND Birthday < @Today + @NumDays
Das wird nicht funktionieren, weil das Geburtsjahr Teil des Geburtstags ist. Wenn ich also am 18.09.1983 Geburtstag hatte, liegt das nicht zwischen dem 18.09.2008 und dem 25.09.2008.
Gibt es eine Möglichkeit, den Jahresanteil von Datumsfeldern zu ignorieren und nur Monat/Tage zu vergleichen?
Dies wird jeden Montagmorgen durchgeführt, um die Manager auf bevorstehende Geburtstage aufmerksam zu machen, so dass es möglicherweise den Jahreswechsel überspannen wird.
Hier ist die funktionierende Lösung, die ich schließlich erstellt habe, danke Kogus.
SELECT * FROM Employees
WHERE Cast(DATEDIFF(dd, birthdt, getDate()) / 365.25 as int)
- Cast(DATEDIFF(dd, birthdt, futureDate) / 365.25 as int)
<> 0