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.
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
datumindien 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
- De leeftijd berekenen (volledige gids)
- De leeftijd berekenen in Excel
- De leeftijd berekenen in JavaScript
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.