You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何查询指定日期间隔内对应星期几的所有日期

MySQL 8.0 查询日期区间内指定星期的日期方案

实现逻辑

通过递归CTE生成fromDate到toDate之间的所有连续日期,再通过星期函数筛选符合要求的日期即可。

注:本方案适配你给出的星期参数规则:数值4对应周四、5对应周五,如需调整可自行修改星期计算逻辑。

完整查询代码

-- 如查询区间超过1000天,先执行这行修改递归深度限制,数值按需调整
-- SET cte_max_recursion_depth = 10000;

WITH RECURSIVE date_range AS (
    -- 替换为你的fromDate参数
    SELECT DATE('2021-09-01 00:00:00') AS cur_date
    UNION ALL
    SELECT cur_date + INTERVAL 1 DAY
    FROM date_range
    -- 替换为你的toDate参数
    WHERE cur_date < DATE('2021-09-30 00:00:00')
)
SELECT cur_date AS 符合条件的日期
FROM date_range
-- IN括号内替换为你的dayOfWeek参数集合
WHERE (WEEKDAY(cur_date) + 1) IN (4,5);

代码说明

  • WEEKDAY()函数原生返回规则:0=周一、1=周二、2=周三、3=周四、4=周五、5=周六、6=周日,加1后刚好匹配你给出的星期参数定义。
  • 如需使用原生DAYOFWEEK()函数(返回规则:1=周日、2=周一、…、6=周五、7=周六),把WHERE条件替换为DAYOFWEEK(cur_date) IN (5,6)即可实现相同筛选效果。

示例输出(对应你给出的参数)

符合条件的日期
2021-09-02
2021-09-03
2021-09-09
2021-09-10
2021-09-16
2021-09-17
2021-09-23
2021-09-24
2021-09-30

内容的提问来源于stack exchange,提问作者Anshul Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:06:00