In einer SQL Server-Datenbank zeichne ich das Geburtsdatum der Personen auf. Gibt es eine einfache Methode, das Alter der Person an einem bestimmten Datum nur mit SQL zu berechnen?
Die Verwendung von DATEDIFF (YEAR, DateOfBirth, GETDATE ()) funktioniert nicht, da nur der Jahresteil des Datums angezeigt wird. Beispiel: DATEDIFF (YEAR, '31 December 2007 ', '01 January 2008') gibt 1 zurück.
Sehen Sie sich diesen Artikel an: Wie berechnet man das Alter einer Person anhand von SQL-Codes
Hier ist der Code aus dem Artikel:
%Vor%Es gibt einen anderen Weg, der etwas einfacher ist:
%Vor%Da die Rundung sehr granular ist, ist dies fast perfekt genau. Die Ausnahmen sind so verworren, dass sie fast witzig sind: Jedes vierte Jahr wird das zurückkehrende Alter ein Jahr zu jung sein, wenn wir A) um das Alter vor 6:00 Uhr bitten, B) am Geburtstag der Person und C) ihren Geburtstag haben 28. Februar. In meiner Umgebung ist dies ein vollkommen akzeptabler Kompromiss.
Ich hoffe, dieser ist perfekt, vorausgesetzt, Sie akzeptieren den Algorithmus, dass ein Schaltbaby jedes Jahr am 29. Februar oder am 1. März in Nichtschaltjahren ein Jahr älter wird. @DOB muss ein Datum innerhalb weniger Jahrhunderte enthalten, @AsOf muss ein ähnliches Datum enthalten & gt; = @DOB:
%Vor%Ich würde wirklich wirklich jede Prüfung und Kommentare schätzen, da ich noch keinen Weg gefunden habe, es zu brechen ... noch.
Hinzugefügt - 31.01.2014: Dieser scheint auch perfekt zu funktionieren, auch wenn er auf den ersten Blick zu grob wirkt:
%Vor%Pop diese in einer Funktion und hier ist ein Testskript:
%Vor%Prost
PS: Du kannst die Entscheidung vom 29. Februar wahrscheinlich dahingehend ändern, dass du einen Tag früher bist, wenn das dein Boot schwimmt.
Tags und Links sql sql-server tsql