Heim >Datenbank >MySQL-Tutorial >Wie berechnet man das Alter in SQL Server anhand des Geburtsdatums genau?

Wie berechnet man das Alter in SQL Server anhand des Geburtsdatums genau?

Barbara Streisand
Barbara StreisandOriginal
2025-01-22 13:26:09510Durchsuche

How to Accurately Calculate Age in SQL Server Using Date of Birth?

Präzise Altersberechnung in SQL Server anhand des Geburtsdatums

SQL Server bietet effiziente Methoden zur Berechnung des Alters aus einem Geburtsdatum. Die Funktion CAST() konvertiert Geburtsdatumszeichenfolgen problemlos in den Datentyp DATE/DATETIME und ermöglicht so verschiedene Datumsberechnungen, einschließlich Altersbestimmung.

Betrachten Sie diese Beispieldaten:

ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00

Altersberechnung mit DATEDIFF()

Die Funktion DATEDIFF() berechnet die Differenz zwischen zwei Datumsangaben. Durch die Kombination mit GETDATE() (das das aktuelle Datum und die aktuelle Uhrzeit angibt) können wir das Alter in verschiedenen Einheiten bestimmen:

<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, DOB, GETDATE()) AS AgeInHours,
       CONVERT(int, ROUND(DATEDIFF(day, DOB, GETDATE()) / 365.25, 0)) AS AgeYearsApprox
FROM table_name;</code>

Dies ergibt das ungefähre Alter in Jahren und entspricht der durchschnittlichen Anzahl der Tage in einem Jahr (365,25). Für genaue Ergebnisse ist eine präzisere Methode erforderlich.

Erweiterte Methoden zur Altersberechnung

Für eine höhere Genauigkeit, insbesondere bei der Berücksichtigung von Schaltjahren, werden ausgefeiltere Ansätze empfohlen.

Ganzzahliges Alter:

Diese Methode liefert das Alter in ganzen Jahren:

<code class="language-sql">SELECT ID, Name,
       (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) < MONTH(DOB) OR (MONTH(GETDATE()) = MONTH(DOB) AND DAY(GETDATE()) < DAY(DOB)) THEN 1 ELSE 0 END AS AgeYearsInt
FROM table_name;</code>

Dezimalalter (genauer):

Diese Berechnung bietet ein genaueres Alter, einschließlich gebrochener Jahre:

<code class="language-sql">SELECT ID, Name,
       DATEDIFF(year, DOB, GETDATE()) +
       CASE
           WHEN DATEADD(year, DATEDIFF(year, DOB, GETDATE()), DOB) > GETDATE() THEN -1
           ELSE 0
       END AS AgeYearsDecimal
FROM table_name;</code>

Diese verbesserten Methoden ermöglichen genauere Altersberechnungen und berücksichtigen die Komplexität von Schaltjahren und Tagesunterschieden für zuverlässigere Ergebnisse. Wählen Sie die Methode, die Ihren Präzisionsanforderungen am besten entspricht.

Das obige ist der detaillierte Inhalt vonWie berechnet man das Alter in SQL Server anhand des Geburtsdatums genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn