Jemandes Alter in SQL finden

8

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.

    
Tim C 12.11.2008, 12:15
quelle

7 Antworten

21

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%     
daddz 12.11.2008, 12:21
quelle
5

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.

    
Mark Brittingham 18.03.2009 02:44
quelle
2

FWIW, Alter kann auf einfache Weise berechnet werden, ohne auf Hacks zurückgreifen zu müssen (nicht dass mit Hacks irgendetwas nicht stimmt!):

%Vor%     
John Pick 31.01.2012 18:55
quelle
1

Diese Lösung zeigt, wie in einer Abfrage ohne Variablen

%Vor%     
Paul 08.10.2012 06:24
quelle
1

Dies ist prägnanter und ein bisschen schneller als die Antworten und absolut genau:

%Vor%     
brianary 23.10.2012 17:01
quelle
0

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.

    
user3255222 30.01.2014 22:29
quelle
0
%Vor%     
Bony Bathini 13.01.2016 01:11
quelle

Tags und Links