我试图从下周一开始接下来一周(周一至周日)的所有生日。
无论查询运行的哪一天,查询都应该能够查找以下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,所以我不确定是否有更新,更优化的方法。
提前致谢!
答案 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)