Sql 从星期一开始的下一周内获得所有生日

Sql 从星期一开始的下一周内获得所有生日,sql,postgresql,Sql,Postgresql,我正在努力从周一开始为下一周(周一-周日)安排所有的生日 无论查询运行在哪一天,查询都应该能够找到以下Mon-Sun的生日。例如,如果查询在星期二运行,它仍然能够显示下一个周一到周日的所有生日 我尝试了以下方法,似乎效果不错,但我不确定如何让它在周一总是“开始”: SELECT * FROM pet WHERE birth_date BETWEEN CURRENT_DATE + INTERVAL '7 days' AND CURRENT_DATE + INTERVAL '14

我正在努力从周一开始为下一周(周一-周日)安排所有的生日

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

我尝试了以下方法,似乎效果不错,但我不确定如何让它在周一总是“开始”:

SELECT * FROM pet
WHERE 
    birth_date BETWEEN CURRENT_DATE + INTERVAL '7 days' 
    AND CURRENT_DATE + INTERVAL '14 days';
请注意,我从一些较老的帖子(2011-2013)中得出了这个答案。我正在运行Postgres 9.5,所以我不确定是否有更新、更优化的方法来实现这一点


提前谢谢

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

周一是一周的开始

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

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

周一是一周的开始

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

无论星期几,这将为您提供下周的每一天:

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)

无论星期几,这将为您提供下周的每一天:

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)

这个帖子的第一个答案告诉你如何得到下周一,然后加7得到那个周日这个帖子的第一个答案告诉你如何得到下周一,然后加7得到那个周日