sql >> Databáze >  >> RDS >> PostgreSQL

Jak vypočítat příští narozeniny vzhledem k datu narození?

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'

Výraz (extract(year from age(birth_date)) + 1) * interval '1' year vypočítá věk při nejbližších narozeninách v (úplných) letech. Když to přidáte k datu narození, získáte další narozeniny.

Obsazení je nezbytné pro získání skutečného date zpět, protože date + interval vrátí časové razítko (včetně času).

Pokud odstraníte where podmínkou, dostanete všechny "příští" narozeniny.

Seznam nadcházejících narozenin můžete také získat např. následujících 30 dní pomocí něčeho takového:

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. Uložte více řádků z databáze mysql do jedné proměnné

  2. Prozkoumání Java Unit Testing pomocí JUnit Test Framework

  3. Vytvořte uživatele se všemi oprávněními v Oracle

  4. Vložit do více tabulek v jednom dotazu