在 Postgres 中检索即将到来的生日

Retrieve upcoming birthdays in Postgres

我有一个用户 table 在 postgres 数据库中有一个 dob(出生日期)字段。

我想编写一个查询来检索接下来五个即将到来的生日。我认为需要考虑以下几点-

有人在 SO 上提出了类似的问题,但 most 甚至没有一个可以接受的答案。谢谢你。

您可以查看出生日期并与当前日期的出生日期进行比较:

SELECT doy
    , extract(doy from dob) - extract(doy from current_date) as upcoming_bday
FROM users
WHERE extract(doy from dob) - extract(doy from current_date) >= 0
order by 2 
limit 5

好吧,这被否决了很多。但无论如何我都会 post 我的回答。其中一个答案帮助我得出了最终解决方案,但由于某种原因该答案已被其所有者删除。

无论如何,这个查询工作得很好。它给出了接下来的 5 个即将到来的生日,以及日期。

SELECT id, name,
  CASE
    WHEN dob2 < current_date THEN dob2 + interval '1 year'
    ELSE dob2
  END 
  AS birthday
FROM people, 
make_date(extract(year from current_date)::int, extract(month from dob)::int, extract(day from dob)::int) as dob2
WHERE is_active = true
ORDER BY birthday
LIMIT 5;