Dieser hat mich für eine Weile jetzt abgehört. Als ich vor einigen Jahren einen Code für einen Kunden neu auflegte, fragte ich mich, ob es eine elegantere Lösung für das Problem gibt.SQL Server 2005, Berechnung anstehender Geburtstage vom Geburtsdatum
Der Kunde speichert alle ihre Kunden Informationen einschließlich Geburtsdatum (Datum Zeitfeld)
Sie führen einen Auszug jeden Montag, die jeden Kunden Geburtstag dessen ruft innerhalb der darauf folgenden Woche fallen.
I.e. Wenn der Auszug am Montag, dem 1. Januar, ausgeführt wurde, würden Kunden, deren Geburtstag zwischen Montag, dem 8. Januar -> Sonntag, dem 14. Januar fiel (einschließlich), abgerufen.
Meine Lösung war, die Funktion Datepart (dy) zu verwenden und alle anstehenden Geburtstage basierend auf dem Geburtstag des Kunden zu berechnen, um den Extrakt am Ende eines Jahres zu verwenden. Das Problem war, dass die Verwendung von Tag des Jahres die Ergebnisse um 1 Tag abbricht, wenn der Kunde in einem Schaltjahr geboren wurde und/oder der Extrakt in einem Schaltjahr nach dem 29. Februar läuft, also musste ich noch mehr hinzufügen Logik so die Prozedur die erwarteten Ergebnisse zurückgegeben.
Dies schien ziemlich über-kill für was sollte eine einfache Aufgabe sein Zur Vereinfachung sagen wir, die Tabelle "Kunde" enthält 4 Felder, Vorname, Nachname, DOB und Adresse.
Vorschläge, wie dies zu vereinfachen würde wirklich
Wes
Natürlich! Ich sehe jetzt. Vielen Dank für Ihre Erklärung. Es scheint so offensichtlich, jetzt verstehe ich, wie es funktioniert! Sobald du festgesessen hast, etwas auf die gleiche Weise zu betrachten, vermisst du das Offensichtliche. Danke vielmals. –
Ach komm schon, es ist die Kraft von SO! Wissen Sie, Brainstorming Dinge. –
Ich habe diese Methode mit 30 Tagen verwendet und ich fand, dass es zu dieser Jahreszeit (15. Dezember) nicht funktioniert. Schauen Sie sich die Antwort hier an: http://stackoverflow.com/questions/83531/sql-select-upcoming-birthdays – Warren