2025年 mysql国家法定节假日脚本

2025年 mysql国家法定节假日脚本

查阅相关资料,根据日历表核对数据,获取2025年数据

创建表结构

DROP TABLE IF EXISTS `public_holiday_info`;
CREATE TABLE `public_holiday_info` (
  `holiday_id` int(11) NOT NULL AUTO_INCREMENT,
  `holiday_name` varchar(20) DEFAULT NULL COMMENT '节假日名称',
  `holiday_time` date DEFAULT NULL COMMENT '节假日时间',
  `remark` varchar(50) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`holiday_id`),
  UNIQUE KEY `unique_day` (`holiday_time`) -- 确保每个日期唯一
) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8mb4 COMMENT='节假日';

清空现有数据

TRUNCATE TABLE public_holiday_info;

插入2025年法定节假日和调休日数据

-- 元旦:1月1日(周三)放假1天,不调休。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('元旦', '2025-01-01', '法定节假日');
-- 春节:1月28日(农历除夕、周二)至2月4日(农历正月初七、周二)放假调休,共8天。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('春节', '2025-01-28', '法定节假日'),
('春节', '2025-01-29', '法定节假日'),
('春节', '2025-01-30', '法定节假日'),
('春节', '2025-01-31', '法定节假日'),
('春节', '2025-02-01', '法定节假日'),
('春节', '2025-02-02', '法定节假日'),
('春节', '2025-02-03', '法定节假日'),
('春节', '2025-02-04', '法定节假日');
--调休:1月26日(周日)、2月8日(周六)上班。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('调休', '2025-01-26', '因春节假期调休为工作日'),
('调休', '2025-02-08', '因春节假期调休为工作日');
-- 清明节:4月4日(周五)至6日(周日)放假,共3天。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('清明节', '2025-04-04', '法定节假日'),
('清明节', '2025-04-05', '法定节假日'),
('清明节', '2025-04-06', '法定节假日');
-- 劳动节:5月1日(周四)至5日(周一)放假调休,共5天。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('劳动节', '2025-05-01', '法定节假日'),
('劳动节', '2025-05-02', '法定节假日'),
('劳动节', '2025-05-03', '法定节假日'),
('劳动节', '2025-05-04', '法定节假日'),
('劳动节', '2025-05-05', '法定节假日');
-- 调休:4月27日(周日)上班。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('调休', '2025-04-27', '因劳动节假期调休为工作日');
-- 端午节:5月31日(周六)至6月2日(周一)放假,共3天。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('端午节', '2025-05-31', '法定节假日'),
('端午节', '2025-06-01', '法定节假日'),
('端午节', '2025-06-02', '法定节假日');
-- 国庆节、中秋节:10月1日(周三)至8日(周三)放假调休,共8天。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('国庆节/中秋节', '2025-10-01', '法定节假日'),
('国庆节/中秋节', '2025-10-02', '法定节假日'),
('国庆节/中秋节', '2025-10-03', '法定节假日'),
('国庆节/中秋节', '2025-10-04', '法定节假日'),
('国庆节/中秋节', '2025-10-05', '法定节假日'),
('国庆节/中秋节', '2025-10-06', '法定节假日'),
('国庆节/中秋节', '2025-10-07', '法定节假日'),
('国庆节/中秋节', '2025-10-08', '法定节假日');
--调休:9月28日(周日)、10月11日(周六)上班。
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`) VALUES
('调休', '2025-09-28', '因国庆节/中秋节假期调休为工作日'),
('调休', '2025-10-11', '因国庆节/中秋节假期调休为工作日');
-- 插入2025年所有周末双休日,并排除已存在的节假日和调休日
INSERT INTO `public_holiday_info` (`holiday_name`, `holiday_time`, `remark`)
SELECT '周末', DATE_ADD(DATE '2025-01-01', INTERVAL n DAY), '周末'
FROM (
    SELECT a.N + b.N * 7 AS n
    FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a,
         (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    WHERE DATE_ADD(DATE '2025-01-01', INTERVAL n DAY) <= DATE '2025-12-31'
) numbers
WHERE DAYOFWEEK(DATE_ADD(DATE '2025-01-01', INTERVAL n DAY)) IN (1, 7)
AND DATE_ADD(DATE '2025-01-01', INTERVAL n DAY) NOT IN (
    SELECT `holiday_time` FROM `public_holiday_info`
);
-- 删除被调休成工作日的周末记录,以确保这些日子不会被认为是休息日
DELETE FROM `public_holiday_info`
WHERE `holiday_time` IN ('2025-01-26', '2025-02-08', '2025-04-27', '2025-09-28', '2025-10-11')
AND `holiday_name` = '周末';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davina_yu

您的打赏,是我灵感源泉,求投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值