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):
<code class="language-sql">SELECT DATEDIFF(hour, @dob, GETDATE())/8766.0 AS AgeYearsDecimal</code>
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:
<code class="language-sql">SELECT (CONVERT(int,CONVERT(char(8),@Now,112))-CONVERT(char(8),@Dob,112))/10000 AS AgeIntYears</code>
Präzise dezimale Altersberechnung:
Für ein genaueres Dezimalalter wird diese verbesserte Methode empfohlen:
<code class="language-sql">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</code>
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!