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

基于Days表与Week Ending Date表计算每周工作日天数的SQL方案选型

方案选择:用全量日期表(All Days)更简便

为啥选全量日期表?

  • 不用额外维护数据:全量表包含所有日期,不用手动更新工作日、假日的变动,省得漏改出错
  • 设计视图操作更省事:直接在全量表上做筛选+分组,步骤更少,不用额外关联其他表
  • 逻辑一目了然:直接通过日期标记=1筛选工作日,自动排除周六日(标记2)和假日(标记3),不用额外处理复杂规则

设计视图操作步骤(以Access为例,其他数据库逻辑一致)

  1. 打开设计视图,把全量日期表(All Days)拖进视图
  2. 如果表本身没有「周末结束日期」字段,新建计算字段:在字段行输入周末结束日期: DateAdd("d", 4 - Weekday([日期]), [日期])(这个公式会把每个日期对应到当周周五)
  3. 拖入「日期标记」字段,在条件行输入1
  4. 点击工具栏的「总计」按钮(Σ图标):
    • 把「日期」字段的总计类型改成「计数」
    • 把「周末结束日期」的总计类型改成「分组」
    • 把「日期标记」的总计类型改成「条件」
  5. 运行查询,就能得到每周(以周五为结束)的工作日天数

简单SQL参考(供理解用)

-- SQL Server版本,日期函数根据数据库调整
SELECT
  DATEADD(day, 4 - DATEPART(weekday, [日期]), [日期]) AS 周末结束日期,
  COUNT([日期]) AS 工作日天数
FROM [All Days]
WHERE [日期标记] = 1
GROUP BY DATEADD(day, 4 - DATEPART(weekday, [日期]), [日期])

为啥不推荐工作日表?

  • 维护麻烦:每次有新假日或者日期调整,都要手动更新工作日表,容易遗漏
  • 操作更复杂:设计视图里需要关联工作日表和周末结束日期表,步骤多,对SQL经验少的人不友好
  • 逻辑容易乱:如果工作日表没自带周结束日期,还要额外计算或关联,增加出错概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:35:28