postgresql - 在 Postgresql 中获取两个日期之间的工作日

标签 postgresql weekday

我需要获取给定时间间隔内的所有工作日。

在postgresql中,有dowisodow

通过将它们混合在一起,我可以编写一个函数来检索工作日吗?

最佳答案

demo:db<>fiddle

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. 返回工作日的名称
  2. 返回工作日的编号(星期一 = 1,星期日 = 7)
  3. 返回工作日的编号(星期日 = 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/

相关文章:

php - 在已知开始日期和工作日的情况下查找正在进行的事件的日历日期

mysql - 尝试在工作日和周末获取 COUNT()

sql - PLSQL - 如何查找给定日期的星期一和星期五

postgresql - 在postgresql中对jsonb进行排序

java - 我如何用 JPA 表达这个约束?

postgresql - 备份 postgresql WAL 日志

sql - 如何在 Sequelize 中为带有响应数组的表对象设置模型

python - 列不存在 (SQLAlchemy/PostgreSQL) : Trouble with quotation marks

mysql - 从日期字符串中提取日期编号

mysql - 我是否正确计算了一周中每天的每小时平均收入?