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

时间:2017-09-11 20:17:24

标签: sql postgresql postgresql-9.6

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

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

  • 按出生日期排序不会起作用,因为年份可能不同。
  • 您希望按日期/月份对结果进行排序,但从今天开始。因此,例如,昨天的日期将是最后一行。
  • 理想情况下,我想在没有功能的情况下这样做。虽然不是交易破坏者。

类似的问题已在SO上提出,但most甚至没有接受答案。谢谢。

2 个答案:

答案 0 :(得分:1)

嗯,这已经失败了很多。但无论如何,我会发布我的回答。其中一个答案帮助我找到了最终解决方案,并且其所有者出于某种原因删除了该答案。

无论如何,这个查询完美无缺。它提供了接下来的5个即将到来的生日以及日期。

t1

答案 1 :(得分:0)

您可以查看dob的一年中的某一天,并与当前日期的doy进行比较:

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