Terug naar Blog
3 min read

Hoe u de leeftijd kunt berekenen in SQL (PostgreSQL, MySQL, SQL Server)

Leer praktische SQL-patronen om de leeftijd te berekenen vanaf een geboortedatum: voltooide jaren, exacte jaren en maanden, en leeftijd vanaf een specifieke datum. Bevat voorbeelden voor PostgreSQL, MySQL en SQL Server.

Hoe u de leeftijd kunt berekenen in SQL (PostgreSQL, MySQL, SQL Server)

Wilt u de leeftijd berekenen in SQL op basis van een geboortedatum? Deze handleiding toont praktische, kopieerklare queries voor veelgebruikte databases. Je leert hoe je het volgende kunt berekenen:

  • Leeftijd in jaren (aantal voltooide jaren)
  • Leeftijd vanaf een specifieke datum (niet alleen vandaag)
  • Een exacte stijluitvoer (jaren en maanden) als je meer details nodig hebt

1) Bepaal wat 'leeftijd' betekent voor uw gebruiksscenario

De meeste bedrijfslogica gebruikt jaren voltooid. Dat betekent dat iemand geboren op 10-06-2000 op 10-06-2026 25 is, niet eerder. Wees voorzichtig met het eenvoudig aftrekken van jaartallen, zoals YEAR(vandaag) - YEAR(geboortedatum), want vóór de verjaardag is dit verkeerd.

2) PostgreSQL: leeftijd in jaren (aantal voltooide jaren)

PostgreSQL heeft een ingebouwde functie age() die een interval retourneert. Extraheer volledige jaren als volgt:

SELECTEER EXTRACT(JAAR VAN leeftijd(CURRENT_DATE, geb.)) AS leeftijd_jaren
VAN mensen;

PostgreSQL: leeftijd vanaf een specifieke datum

SELECTEER EXTRACT(JAAR VAN leeftijd(DATUM '23-02-2026', geb.)) AS leeftijd_jaren
VAN mensen;

3) MySQL: leeftijd in jaren (aantal voltooide jaren)

Gebruik in MySQL TIMESTAMPDIFF:

SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS leeftijd_jaren
VAN mensen;

MySQL: leeftijd vanaf een specifieke datum

SELECT TIMESTAMPDIFF(YEAR, dob, DATE('23-02-2026')) AS leeftijd_jaren
VAN mensen;

4) SQL Server: leeftijd in jaren (aantal voltooide jaren)

Een veel voorkomend patroon in SQL Server is DATEDIFF minus een verjaardagscontrole:

SELECTEER
  DATEDIFF(JAAR, dob, CAST(GETDATE() AS-datum))
  - GEVAL
      WHEN DATEADD(YEAR, DATEDIFF(YEAR, dob, CAST(GETDATE() AS datum)), dob) > CAST(GETDATE() AS datum)
      DAN 1 ANDERS 0
    EINDIGEN AS leeftijd_jaren
VAN mensen;

SQL Server: leeftijd vanaf een specifieke datum

DECLARE @as_of date = '23-02-2026';
SELECTEER
  DATUMVERSCH.(JAAR, dob, @as_of)
  - GEVAL
      WHEN DATEADD(JAAR, DATEDIFF(JAAR, dob, @as_of), dob) > @as_of
      DAN 1 ANDERS 0
    EINDIGEN AS leeftijd_jaren
VAN mensen;

5) Exacte leeftijd (jaren en maanden) voorbeeld

Als je een 'exacte' presentatie wilt, zoals '31 jaar en 4 maanden', bereken dan eerst de jaren en daarna de maanden na de laatste verjaardag. Hier is een PostgreSQL-voorbeeld:

MET basis AS (
  SELECT dob, CURRENT_DATE AS as_of
  VAN mensen
)
SELECTEER
  EXTRACT(JAAR VAN leeftijd(as_of, dob)) AS jaren,
  EXTRACT(MAAND UIT leeftijd(vanaf,geb.)) AS maanden
VAN basis;

Veelvoorkomende valkuilen

  • Tijdzones: sla DOB op als een datum indien mogelijk. Datumtijden kunnen tussen zones verschuiven.
  • Verjaardagen op schrikkeldagen: definieer wat er gebeurt in niet-schrikkeljaren. De meeste systemen behandelen verjaardagen van 29-02-2004 als 28-02 of 01-03, afhankelijk van het beleid.
  • Null of toekomstige DOB: filteren of bewaken, andersuw zoekopdracht retourneert nulwaarden of negatieve waarden.

Snelle geestelijke gezondheidscontrole

Als je snel één geboortedatum wilt verifiëren, kun je de online calculator gebruiken: Bereken de leeftijd online.

Gerelateerde handleidingen

Veelgestelde vragen

Waarom is YEAR(vandaag) minus YEAR(dob) verkeerd?

Er wordt genegeerd of de verjaardag dit jaar al heeft plaatsgevonden, dus de leeftijd vóór de verjaardag wordt overschat.

Wat is het veiligste SQL-type voor geboortedatum?

Gebruik een kolom datum (niet datum/tijd) voor geboortedatum als het je alleen om de kalenderdag gaat.