Für eine genaue Altersberechnung in SQL auf der Grundlage eines Geburtsdatums muss die Spalte „Geburtsdatum“ einen gültigen Datentyp datetime
oder date
haben. Wenn Ihre Geburtsdatumsspalte derzeit nvarchar(25)
ist, müssen Sie sie zunächst in ein geeignetes Datumsformat konvertieren.
Angenommen, diese Konvertierung ist abgeschlossen, untersuchen wir effektive Methoden zur Altersberechnung:
Methode 1: Ein vereinfachter Ansatz (ungefähr)
Diese Methode verwendet DATEDIFF
, um die Differenz in Stunden zwischen dem aktuellen Datum und dem Geburtsdatum zu ermitteln, und dividiert sie dann durch die ungefähre Anzahl der Stunden in einem Jahr (8766,0):
SELECT DATEDIFF(hour, @dob, GETDATE())/8766.0 AS AgeYearsDecimal
Dies ergibt ein Dezimalalter, dessen Genauigkeit jedoch aufgrund von Schwankungen in der Anzahl der Tage pro Monat und Schaltjahren begrenzt ist.
Verbesserte und genauere Methoden:
Berechnung des ganzzahligen Alters:
Diese Methode berechnet das Alter in ganzen Jahren:
SELECT (CONVERT(int,CONVERT(char(8),@Now,112))-CONVERT(char(8),@Dob,112))/10000 AS AgeIntYears
Präzise dezimale Altersberechnung:
Für ein genaueres Dezimalalter wird diese verbesserte Methode empfohlen:
SELECT 1.0* DateDiff(yy,@Dob,@Now) +CASE WHEN @Now >= DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)) THEN ( 1.0 * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) ELSE -1 * ( * DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),DATEPART(m,@Dob),DATEPART(d,@Dob)),@Now) / DATEDIFF(day,DATEFROMPARTS(DATEPART(yyyy,@Now),1,1),DATEFROMPARTS(DATEPART(yyyy,@Now)+1,1,1)) ) END AS AgeYearsDecimal
Diese erweiterte Methode berücksichtigt Schaltjahre und liefert eine äußerst genaue Dezimaldarstellung des Alters in Jahren. Dies ist die bevorzugte Methode für Situationen, die eine genaue Altersberechnung erfordern.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von SQL das Alter in Jahren ausgehend vom Geburtsdatum genau berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!