我需要获取给定时间间隔内的所有工作日。
在postgresql中,有dow
和isodow
通过将它们混合在一起,我可以编写一个函数来检索工作日吗?
最佳答案
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
关于postgresql - 在 Postgresql 中获取两个日期之间的工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65073257/