Zurück zum Blog
3 min read

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.

So berechnen Sie das Alter in SQL (PostgreSQL, MySQL, 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

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.