有没有办法在不创建新表或视图的情况下计算 PostgreSQL 中两个日期之间的天数(不包括周末和特定假期)?我只有数据库的读取权限,因此无法创建“假日”表或视图。我正在考虑使用generate_series函数,但假期并不遵循特定的模式,因为它们变化很大。我可以在不遵循模式的情况下创建多个系列吗?
例如:
计算 05/01/2022 至 05/31/2022 之间的天数,不包括:
- 2022年5月1日(周末)
- 2022年5月7日(周末)
- 2022年5月8日(周末)
- 2022年5月14日(周末)
- 2022年5月15日(周末)
- 2022年5月21日(周末)
- 2022年5月22日(周末)
- 2022年5月28日(周末)
- 2022年5月29日(周末)
但也不包括:
- 2022年5月5日(假期)
- 2022年5月11日(假期)
- 2022年5月27日(假期)
SELECT
count(s) FILTER (WHERE (EXTRACT(isodow FROM s::date)
NOT IN (6, 7))
AND s::date NOT IN ('2022-05-05', '2022-05-11', '2022-05-27'))
FROM
generate_series('2022-05-01'::date, '2022-05-31'::date, interval '1 day') g (s);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)