Postgres heeft de age()
functie die de leeftijd in jaren, maanden en dagen retourneert op basis van twee datums.
Dit werkt prima, tenzij je de leeftijd alleen in jaren wilt teruggeven.
U wilt bijvoorbeeld gewoon de leeftijd van een persoon retourneren op basis van zijn of haar verjaardag. Je wilt zoiets als 32 in plaats van 32 jaar 4 maanden 67 dagen , wat is wat age()
zal waarschijnlijk terugkeren.
Gelukkig is er een gemakkelijke manier om dit te doen in PostgreSQL.
Als u alleen de leeftijd in jaren wilt, kunt u ofwel extract()
. gebruiken of date_part()
om het jaar te krijgen vanaf de age()
de geretourneerde waarde van de functie.
Hier is een voorbeeld dat de date_part()
. gebruikt functie:
SELECT date_part('year', age(timestamp '2003-12-27'));
Resultaat:
16.0
Zo ziet het eruit als ik het in Azure Data Studio uitvoer.
Als ik het uitvoer in psql , ik krijg dit:
16
Beide extract()
en date_part()
hun resultaten retourneren met het gegevenstype dubbele precisie.
U kunt dit indien nodig naar een geheel getal (of een ander gegevenstype) converteren door het toe te voegen met ::int
.
SELECT date_part('year', age(timestamp '2003-12-27'))::int;
Resultaat:
16