sql >> Database teknologi >  >> RDS >> PostgreSQL

Beregn alderen i år i PostgreSQL

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

  1. Oprettelse af dynamisk pivottabel med funktionen QUOTENAME

  2. Hvordan parametriserer jeg en nul-streng med DBNull.Value klart og hurtigt

  3. SQL UDENLANDSKE NØGLE

  4. Django bulk_create med ignorer rækker, der forårsager IntegrityError?