Heim > Datenbank > MySQL-Tutorial > Wie berechnet man das Alter anhand des Geburtsdatums mithilfe von getDate() von SQL?

Wie berechnet man das Alter anhand des Geburtsdatums mithilfe von getDate() von SQL?

Mary-Kate Olsen
Freigeben: 2025-01-22 13:47:12
Original
438 Leute haben es durchsucht

How to Calculate Age from Date of Birth Using SQL's getDate()?

Verwenden Sie die SQL-Funktion getDate(), um das Alter basierend auf dem Geburtsdatum zu berechnen

Frage:

Viele Datenbanken speichern persönliche Informationen, einschließlich des Geburtsdatums. Um das Alter für die Aktenverwaltung genau verfolgen zu können, muss das gespeicherte Geburtsdatum in das Alter der Person in Jahren umgerechnet werden.

Lösung:

String-Datum in Datumsdatentyp konvertieren:

  1. Verwenden Sie die Funktion CONVERT(), um das Geburtsdatum vom Typ Varchar in den Datentyp DateTime zu konvertieren:
<code class="language-sql">CONVERT(datetime, DOB)</code>
Nach dem Login kopieren

Alter in Jahren berechnen:

  1. Verwenden Sie die Funktion DATEDIFF(), um die Stundendifferenz zwischen dem aktuellen Datum und der aktuellen Uhrzeit (erhalten mit getDate()) und dem konvertierten Geburtsdatum zu berechnen:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate())</code>
Nach dem Login kopieren
  1. Dividieren Sie die Stundendifferenz durch 8766 (die Anzahl der Stunden in einem Jahr), um das Alter in Dezimaljahren zu erhalten:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0</code>
Nach dem Login kopieren

Ausgabe:

<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB
FROM [YourTable];</code>
Nach dem Login kopieren

Überlegungen zur Genauigkeit:

Schaltjahre und genaue Datumsberechnungen beeinträchtigen die Genauigkeit. Um die Genauigkeit zu verbessern, beachten Sie Folgendes:

Der beste Weg, das Alter in ganzen Zahlen zu berechnen:

<code class="language-sql">(CONVERT(int, CONVERT(char(8), @Now, 112)) - CONVERT(char(8), @Dob, 112)) / 10000</code>
Nach dem Login kopieren

Der beste Weg, das Alter als Dezimalzahl zu berechnen:

<code class="language-sql">1.0 * DATEADD(yy, @Dob, @Now)
+ CASE
    WHEN @Now >= DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)) THEN   -- 当年生日已过
        (1.0
        * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now)
        / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1))
        )
    ELSE    -- 当年生日未过
        -1 * (
            -1.0
            * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now)
            / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1))
        )
END</code>
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage