【发布时间】:2021-03-12 08:33:39
【问题描述】:
我需要在给定的时间间隔内获取所有工作日。
在postgresql中,有dow和isodow
通过将它们混合在一起,我可以编写一个函数来检索工作日吗?
【问题讨论】:
标签: postgresql weekday
我需要在给定的时间间隔内获取所有工作日。
在postgresql中,有dow和isodow
通过将它们混合在一起,我可以编写一个函数来检索工作日吗?
【问题讨论】:
标签: postgresql weekday
据我了解,您需要提取两个日期之间的所有星期一..星期五。这是一个以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;
【讨论】:
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
编辑:
如果你想得到没有周末的日子,你可以通过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
【讨论】: