从星期一开始,在接下来的一周内生日快乐

时间:2017-03-24 16:26:36

标签: sql postgresql

我试图从下周一开始接下来一周(周一至周日)的所有生日。

无论查询运行的哪一天,查询都应该能够查找以下Mon-Sun的生日。因此,例如,如果查询是在星期二运行的,它仍然可以显示以下星期一至星期日的所有生日。

我已经尝试了以下内容,它似乎有效,但我不知道如何让它始终在星期一“开始”:

SELECT * FROM pet
WHERE 
    birth_date BETWEEN CURRENT_DATE + INTERVAL '7 days' 
    AND CURRENT_DATE + INTERVAL '14 days';

请注意,我从SO的一些旧帖子(2011-2013)中得出了这个答案。我正在运行Postgres 9.5,所以我不确定是否有更新,更优化的方法。

提前致谢!

2 个答案:

答案 0 :(得分:3)

这将为您提供下一周的星期一。

周一的作品是本周的开始。

select date_trunc('week', current_date +7);

答案 1 :(得分:0)

无论工作日如何,这都会给你下周的每一天:

select  (date_trunc('week', now()+interval'1 week')::timestamp + (t.days::text||' days')::interval )::date
from generate_series (0,6) t(days)

在查询中使用它:

select t.birthdays
from pet,
generate_series(date_trunc('week', birth_date  +interval'1 week') ,
             date_trunc('week', birth_date +interval'2 week'),'1 day' ) t(birthdays)