新闻中心
SQL 日期函数如何计算节假日天数?
首先创建节假日表存储节日日期,再通过SQL查询统计指定时间段内节假日天数,结合WEEKDAY等函数可排除周末,实现精准计数。

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
MetaGPT推出的自然语言编程工具
163
查看详情
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 日期函数如何计算节假日天数?的详细内容,更多请关注其它相关文章!
# 自动识别
# 上海营销推广费用明细表
# 装修行业竞价推广营销
# 企业优化网站推广策划
# 拼多多seo引流方法
# 祛痘网站推广怎么做好点
# 网站推广故照云速捷13
# 如何优化教育类网站链接
# 画画网站建设工作推荐
# 济南seo营销培训学校
# 湖南数据网站推广前景
# mysql
# 这张
# 有多少
# 相关文章
# 你想
# 就能
# 自然语言
# 周末
# 详细说明
# 自定义
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】
微博网页版首页入口 微博电脑端官网登录链接
mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤
迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法
韩剧圈正版入口页面_韩剧圈官网登录链接
html5 app怎么运行环境_配html5 app运行环境【教程】
AO3访问入口汇总 AO3网页版同人作品一键直达
哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法
jQuery Mask 插件中实现电话号码固定前导零的教程
Node.js 中使用 node-cron 实现定时 API 数据抓取与处理
怎么在mac上运行html代码_mac运行html代码方法【指南】
批改网学生版PC登录 批改网官网登录系统入口
使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性
12306选座怎么选到临时改签座_12306改签选座策略与步骤
Python中高效访问嵌套字典与列表中的键值对
C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
Go语言HTML解析:利用Goquery精准获取指定元素内容
MongoDB聚合管道:正确匹配对象数组中_id的方法
c++项目目录结构应该如何组织_c++工程化项目结构规范
Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】
如何在CSS中使用浮动制作导航栏_float实现水平菜单
为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法
J*aScript设计模式实践_j*ascript代码优化
一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension
sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置
mysql备份恢复性能优化_mysql备份恢复性能优化方法
不同用户不同价格! 索尼开启账户个性化定价测试
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验
html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】
AO3网页版合集入口 Archive of Our Own同人作品浏览指南
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
J*aScript中向JSON对象添加新属性的正确姿势
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
4399免费游戏网址入口 4399小游戏免费入口点开即玩
Golang如何测试channel通信行为_Golang channel通信测试与分析方法
Golang如何实现简单的Web表单_Golang表单提交与验证处理方法
夸克浏览器图书入口 夸克手机浏览器阅读入口
拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法
解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常
凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法
QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网


2025-10-06
浏览次数:次
返回列表
期,再通过SQL查询统计指定时间段内节假日天数,结合WEEKDAY等函数可排除周末,实现精准计数。