Postgres har age() funktion, der returnerer alderen i år, måneder og dage baseret på to datoer.
Dette fungerer fint, medmindre du kun ønsker at returnere alderen i år.
For eksempel vil du blot returnere en persons alder baseret på deres fødselsdag. Du vil have noget som 32 i stedet for 32 år 4 måneder 67 dage , hvilket er hvad age() vil sandsynligvis vende tilbage.
Heldigvis er der en nem måde at gøre dette på i PostgreSQL.
Hvis du kun ønsker alderen i år, kan du bruge enten extract() eller date_part() for at få året fra age() funktions returværdi.
Her er et eksempel, der bruger date_part() funktion:
SELECT date_part('year', age(timestamp '2003-12-27')); Resultat:
16.0
Sådan ser det ud, når jeg kører det i Azure Data Studio.
Når jeg kører det i psql , jeg forstår dette:
16
Begge extract() og date_part() returnere deres resultater ved hjælp af datatypen med dobbelt præcision.
Du kan konvertere dette til et heltal (eller anden datatype), hvis det kræves, ved at tilføje det med ::int .
SELECT date_part('year', age(timestamp '2003-12-27'))::int; Resultat:
16