新闻中心

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 日期函数如何计算节假日天数?的详细内容,更多请关注其它相关文章!


# 自动识别  # 上海营销推广费用明细表  # 装修行业竞价推广营销  # 企业优化网站推广策划  # 拼多多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邮箱在线登录入口官网 

搜索