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