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:
<code class="language-sql">CONVERT(datetime, DOB)</code>
Alter in Jahren berechnen:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate())</code>
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0</code>
Ausgabe:
<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB FROM [YourTable];</code>
Ü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>
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>
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!