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