sql连续天数排除周末节假日
时间: 2023-07-11 22:29:00 浏览: 168
2022年日期类型(工作日,节假日,周末,节假日调休)
要在 SQL 中计算连续工作日,可以使用日期函数和条件语句。下面是一个示例查询,可以帮助你计算两个日期之间的最大连续工作日数,排除周末和节假日:
``` sql
WITH RECURSIVE dates(date) AS (
SELECT '2022-01-01' -- 起始日期
UNION ALL
SELECT date + INTERVAL 1 DAY
FROM dates
WHERE date < '2022-01-10' -- 结束日期
)
SELECT
MAX(continuous_days) AS max_continuous_days
FROM (
SELECT
date,
date - INTERVAL ROW_NUMBER() OVER (ORDER BY date) DAY AS grp
FROM
dates
WHERE
WEEKDAY(date) < 5 -- 排除周末
AND date NOT IN ('2022-01-01', '2022-01-02') -- 排除节假日,可以根据实际情况修改
) AS t
GROUP BY
grp
ORDER BY
max_continuous_days DESC
LIMIT 1;
```
这个查询使用了一个递归的 `dates` 声明,用来生成两个日期之间的日期序列。然后,使用 `ROW_NUMBER()` 函数和 `grp` 列来计算相邻日期之间的天数,从而识别出连续的工作日。最后,使用子查询和 GROUP BY 语句计算最大连续工作日数。
注意,这个查询假设你已经提前定义好了需要排除的周末和节假日。如果你需要在查询中动态计算这些日期,可以使用子查询或者临时表来实现。
阅读全文