我需要在给定的时间间隔内获得所有的工作日。
在postgresql中,有dow
和isodow
通过将它们混合在一起,我可以编写一个函数来检索工作日吗?
演示:db<gt;小提琴
SELECT
generated_date,
to_char(generated_date, 'Day'), -- 1
EXTRACT(isodow FROM generated_date), -- 2
EXTRACT(dow FROM generated_date) -- 3
FROM
generate_series('2020-11-01'::date, '2020-11-10'::date, interval '1 day') AS generated_date
- 返回工作日的名称
- 返回工作日的数字(星期一=1,星期日=7(
- 返回工作日的数字(周日=0,周六=6(
编辑:
如果你想获得没有周末的日子,你可以通过dow
/isodow
值进行过滤,例如:
SELECT
generated_date::date
FROM
generate_series('2020-11-01'::date, '2020-11-10'::date, interval '1 day') AS generated_date
WHERE
EXTRACT(isodow FROM generated_date) < 6
据我所知,您需要提取整个星期一。。两次约会之间的星期五。这是一个以2020-11-30
作为间隔的开始,2020-12-12
作为间隔的结束的例子
select d
from generate_series('2020-11-30'::date, '2020-12-12'::date, '1 day'::interval) t(d)
where extract(isodow from d) between 1 and 5;