信息发布→ 登录 注册 退出

SQL 日期函数如何计算节假日天数?

发布时间:2025-10-06

点击量:
首先创建节假日表存储节日日期,再通过SQL查询统计指定时间段内节假日天数,结合WEEKDAY等函数可排除周末,实现精准计数。

sql 日期函数如何计算节假日天数?

SQL 本身没有内置的节假日识别功能,因此计算节假日天数需要依赖自定义逻辑或辅助表。要实现节假日天数统计,核心是先明确“节假日”有哪些,再结合日期函数进行匹配和计数。

1. 创建节假日表(Holiday Table)

最实用的方式是创建一张专门存储节假日日期的表,例如:

CREATE TABLE holidays (holiday_date DATE, description VARCHAR(50));
INSERT INTO holidays VALUES ('2025-01-01', '元旦');
INSERT INTO holidays VALUES ('2025-10-01', '国庆节');
-- 可按年份或规则逐年添加

有了这张表,就可以通过 JOIN 或子查询来判断某日期是否为节假日。

2. 统计某时间段内的节假日天数

假设你想统计 2025 年 10 月有多少天是法定节假日,可以这样写:

SELECT COUNT(*) AS holiday_count
FROM holidays
WHERE holiday_date BETWEEN '2025-10-01' AND '2025-10-31';

如果想结合工作日排除周末,还需加入 WEEKDAY 或 DAYOFWEEK 判断。例如在 MySQL 中:

SELECT COUNT(*) AS actual_holidays
FROM holidays
WHERE holiday_date BETWEEN '2025-10-01' AND '2025-10-31'
AND WEEKDAY(holiday_date)

3. 动态判断某天是否为节假日

可在查询中使用 LEFT JOIN 或 EXISTS 来标记节假日:

SELECT d.date,
  CASE WHEN h.holiday_date IS NOT NULL THEN 1 ELSE 0 END AS is_holiday
FROM calendar_dates d
LEFT JOIN holidays h ON d.date = h.holiday_date;

其中 calendar_dates 是一张包含连续日期的辅助表,常用于时间维度分析。

MGX MGX

MetaGPT推出的自然语言编程工具

MGX 163 查看详情 MGX

4. 处理调休(补班)情况

中国节假日常有调休上班的情况,比如某周六本该休息但需上班。这时可以在 holidays 表中增加类型字段:

ALTER TABLE holidays ADD COLUMN holiday_type ENUM('legal', 'makeup');
-- legal 表示放假,makeup 表示补班

然后在统计工作日时排除补班日:

SELECT COUNT(*)
FROM calendar_dates d
WHERE d.date BETWEEN '2025-09-30' AND '2025-10-07'
AND DAYOFWEEK(d.date) NOT IN (1,7) -- 非周日周六
AND NOT EXISTS (
  SELECT 1 FROM holidays h WHERE h.holiday_date = d.date AND h.holiday_type = 'makeup'
);

基本上就这些方法。关键点在于:SQL 无法自动识别节假日,必须靠数据驱动。提前准备节假日+调休表,再配合日期函数(如 BETWEEN、WEEKDAY、DAYOFWEEK),就能灵活计算各类节假日相关天数。

以上就是SQL 日期函数如何计算节假日天数?的详细内容,更多请关注其它相关文章!


相关文章: 1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  Go语言中高效处理x-www-form-urlencoded表单数据  快手网页版在线登录 快手网页版官网入口快速访问  Django表单提交验证失败后保持字段值不刷新  如何在PHP中实现基于MySQL的动态分页查询  新手怎么开始学化妆 零基础化妆入门教程  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看  “在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法  AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南  如何在 Windows 11 中启动游戏手柄设置  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  PHP基于会话的用户类型页面访问控制指南  Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025  凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  React Hooks最佳实践:动态组件状态管理的组件化方案  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南  Lar*el Excel导入时生成自定义递增ID的策略与实践  C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言  mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  《刺客信条:影》PS5 Pro和Switch 2画面对比  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售  如何在网页中实现特定地点的随机图片展示  PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误  必由学官方网站入口 必由学学生教师共用登录通道  win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  Win11怎么开启省电模式_Win11电池节电模式自动开启  微信语音通话掉线如何解决 微信语音通话稳定优化方法  Python类型检查:优化关联可选属性的Mypy推断策略  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  Win10双系统截图高效法 截屏快捷键速记【技巧】  树莓派传感器触发:通过Twilio API发送WhatsApp消息教程  优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法  大麦的“候补”是什么意思 大麦候补购票规则【详解】  Centos/Linux 系统下安装 composer 的完整步骤  微博网页版首页入口 微博电脑端官网登录链接  mysql如何设置表访问权限_mysql表访问权限配置  Python自定义类排序:解决lambda键值访问TypeError的实践指南  深入理解Go语言中的指针类型:以*string为例  苹果手机如何防止被恶意App追踪  Pandas DataFrame:高效添加条件计算列  解决Django多数据库/多Schema环境下外键迁移问题  Win11怎么查看电脑配置_Win11硬件配置检测工具使用  高德地图怎么看全景照片_高德地图全景照片浏览教程  Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践  Go调试环境为何无法启动_Go调试器启动失败原因与解决策略 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!