So berechnen Sie das Alter in SQL (PostgreSQL, MySQL, SQL Server)
Lernen Sie praktische SQL-Muster zur Berechnung des Alters anhand eines Geburtsdatums: abgeschlossene Jahre, genaue Jahre und Monate sowie Alter ab einem bestimmten Datum. Enthält Beispiele für PostgreSQL, MySQL und SQL Server.
Müssen Sie das Alter in SQL anhand eines Geburtsdatums berechnen? Dieser Leitfaden zeigt praktische, kopierfertige Abfragen für gängige Datenbanken. Sie lernen, wie man Folgendes berechnet:
- Alter in Jahren (abgeschlossene Jahre)
- Alter ab einem bestimmten Datum (nicht nur heute)
- Eine genaue Stilausgabe (Jahre und Monate), wenn Sie mehr Details benötigen
1) Entscheiden Sie, was „Alter“ für Ihren Anwendungsfall bedeutet
Die meisten Geschäftslogiken verwenden abgeschlossene Jahre. Das bedeutet, dass jemand, der am 10.06.2000 geboren wurde, am 10.06.2026 25 Jahre alt ist, nicht früher. Seien Sie vorsichtig mit der einfachen Jahressubtraktion wie YEAR(heute) - YEAR(dob), da diese vor dem Geburtstag falsch ist.
2) PostgreSQL: Alter in Jahren (abgeschlossene Jahre)
PostgreSQL verfügt über eine integrierte Funktion age(), die ein Intervall zurückgibt. Extrahieren Sie ganze Jahre wie folgt:
SELECT EXTRACT(YEAR FROM age(CURRENT_DATE, dob)) AS age_years
VON Leuten;
PostgreSQL: Alter ab einem bestimmten Datum
SELECT EXTRACT(YEAR FROM age(DATE '2026-02-23', dob)) AS age_years
VON Personen;
3) MySQL: Alter in Jahren (abgeschlossene Jahre)
Verwenden Sie in MySQL TIMESTAMPDIFF:
SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age_years
VON Personen;
MySQL: Alter ab einem bestimmten Datum
SELECT TIMESTAMPDIFF(YEAR, dob, DATE('2026-02-23')) AS age_years
VON Personen;
4) SQL Server: Alter in Jahren (abgeschlossene Jahre)
Ein häufiges Muster in SQL Server ist DATEDIFF minus einer Geburtstagsüberprüfung:
AUSWÄHLEN
DATEDIFF(YEAR, dob, CAST(GETDATE() AS date))
- FALL
WHEN DATEADD(YEAR, DATEDIFF(YEAR, dob, CAST(GETDATE() AS date)), dob) > CAST(GETDATE() AS date)
DANN 1 ELSE 0
ENDE ALS age_years
VON Personen;
SQL Server: Alter ab einem bestimmten Datum
DECLARE @as_of date = '23.02.2026';
AUSWÄHLEN
DATEDIFF(YEAR, Geburtsdatum, @as_of)
- FALL
WHEN DATEADD(YEAR, DATEDIFF(YEAR, dob, @as_of), dob) > @as_of
DANN 1 ELSE 0
ENDE ALS age_years
VON Personen;
5) Beispiel für das genaue Alter (Jahre und Monate)
Wenn Sie eine „exakte“ Darstellung wie „31 Jahre 4 Monate“ wünschen, berechnen Sie zuerst die Jahre und dann die Monate nach dem letzten Geburtstag. Hier ist ein PostgreSQL-Beispiel:
MIT Basis AS (
SELECT dob, CURRENT_DATE AS as_of
VON Menschen
)
AUSWÄHLEN
EXTRACT(YEAR FROM age(as_of, dob)) AS Jahre,
EXTRACT(MONTH FROM age(as_of, dob)) AS Monate
VON der Basis;
Häufige Fallstricke
- Zeitzonen: Speichern Sie das Geburtsdatum nach Möglichkeit als
Datum. Datumszeiten können sich zwischen den Zonen verschieben. - Geburtstage an Schalttagen: Definieren Sie, was in Nicht-Schaltjahren passiert. Die meisten Systeme behandeln Geburtstage vom 29.02.2004 je nach Richtlinie als 28.02. oder 01.03.
- Null oder zukünftiges Geburtsdatum: Filter oder Schutz, andernfallsIhre Abfrage gibt Nullen oder negative Werte zurück.
Schnelle Überprüfung der geistigen Gesundheit
Wenn Sie ein einzelnes Geburtsdatum schnell überprüfen möchten, können Sie den Online-Rechner verwenden: Alter online berechnen.
Verwandte Leitfäden
- So berechnen Sie das Alter (vollständige Anleitung)
- So berechnen Sie das Alter in Excel
- So berechnen Sie das Alter in JavaScript
FAQ
Warum ist YEAR(today) minus YEAR(dob) falsch?
Es ignoriert, ob der Geburtstag in diesem Jahr bereits stattgefunden hat, daher wird das Alter vor dem Geburtstag zu hoch angegeben.
Was ist der sicherste SQL-Typ für das Geburtsdatum?
Verwenden Sie eine Spalte vom Typ Datum (nicht Datum/Uhrzeit) für das Geburtsdatum, wenn Ihnen nur der Kalendertag wichtig ist.