sql >> Database >  >> RDS >> PostgreSQL

Hoe de volgende verjaardag berekenen met een geboortedatum?

select birth_date,
       cast(birth_date + ((extract(year from age(birth_date)) + 1) * interval '1' year) as date) as next_birthday
from person
where name = 'Bob'

De uitdrukking (extract(year from age(birth_date)) + 1) * interval '1' year berekent de leeftijd op de eerstvolgende verjaardag in (volledige) jaren. Als je dat bij de geboortedatum optelt, krijg je de volgende verjaardag.

De cast is nodig om een ​​echte date te krijgen terug, omdat date + interval geeft een tijdstempel terug (inclusief een tijd).

Als u de where . verwijdert staat, krijg je alle "volgende" verjaardagen.

U kunt ook een lijst krijgen van de komende verjaardagen in b.v. de komende 30 dagen met zoiets als dit:

select next_birthday,
       next_birthday - current_date as days_until_next
from (
  select birth_date,
         cast(birth_date + ((extract(year from age(birth_date)) + 1) * interval '1' year) as date) as next_birthday
  from person
) as upcoming
where upcoming.next_birthday <= current_date + 30
order by next_birthday;


  1. Hoe kan ik een datetime in SQL Server afkappen?

  2. Download apps met het hoogste aantal recensies sinds een dynamische reeks van dagen

  3. Unity3D-verbinding met MySQL-fout

  4. Hoe kunt u de actieve gebruikers via SQL verbinden met een postgreSQL-database?