Postgres har age()
funktion som returnerar åldern i år, månader och dagar baserat på två datum.
Detta fungerar bra om du inte bara vill återställa åldern i år.
Till exempel vill du helt enkelt returnera en persons ålder baserat på deras födelsedag. Du vill ha något som 32 istället för 32 år 4 månader 67 dagar , vilket är vad age()
kommer sannolikt tillbaka.
Lyckligtvis finns det ett enkelt sätt att göra detta i PostgreSQL.
Om du bara vill ha åldern i år kan du använda antingen extract()
eller date_part()
för att få året från age()
funktions returvärde.
Här är ett exempel som använder date_part()
funktion:
SELECT date_part('year', age(timestamp '2003-12-27'));
Resultat:
16.0
Det är så det ser ut när jag kör det i Azure Data Studio.
När jag kör det i psql , jag får det här:
16
Båda extract()
och date_part()
returnera sina resultat med hjälp av datatypen dubbel precision.
Du kan konvertera detta till ett heltal (eller annan datatyp) om det behövs, genom att lägga till det med ::int
.
SELECT date_part('year', age(timestamp '2003-12-27'))::int;
Resultat:
16