当前位置:网站首页>MySQL排除节假日,计算日期差
MySQL排除节假日,计算日期差
2022-07-28 05:29:00 【符华-】
计算两个日期的差,并且需要排除节假日。需要两张表,一张是主表,需要计算日期差的表;一张是节假日表,存放法定节假日和周末的表。
主表
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` bigint NOT NULL AUTO_INCREMENT,
`start_time` datetime NULL DEFAULT NULL,
`end_time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
INSERT INTO `test` VALUES (1, '2021-12-01 12:50:27', '2021-12-04 12:53:38');
INSERT INTO `test` VALUES (2, '2021-12-03 08:22:11', '2021-12-06 17:54:19');
INSERT INTO `test` VALUES (3, '2022-01-01 09:54:28', '2022-01-02 19:50:31');
INSERT INTO `test` VALUES (4, '2021-12-10 13:53:34', '2021-12-25 23:50:55');
INSERT INTO `test` VALUES (5, '2022-01-10 07:20:06', '2022-01-11 22:55:13');
INSERT INTO `test` VALUES (6, '2021-12-26 16:10:17', '2021-12-28 16:55:25');
INSERT INTO `test` VALUES (7, '2021-12-27 20:55:35', '2022-01-02 17:35:43');
INSERT INTO `test` VALUES (8, '2022-01-12 21:35:49', '2022-01-16 14:22:54');
节假日表(有21年和22年的节假日)
DROP TABLE IF EXISTS `sys_holiday`;
CREATE TABLE `sys_holiday` (
`id` bigint NOT NULL AUTO_INCREMENT,
`date` datetime NULL DEFAULT NULL COMMENT '日期',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '节日名称',
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '节假日类型(0 工作日、1 周末、2 节日、3 调休)',
`week` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '1 - 7,分别表示 周一 至 周日',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '节假日表' ROW_FORMAT = DYNAMIC;
INSERT INTO `sys_holiday` VALUES (1, '2022-06-04 00:00:00', '端午节', '2', '6');
INSERT INTO `sys_holiday` VALUES (2, '2022-08-06 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (3, '2022-02-20 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (4, '2021-10-03 00:00:00', '国庆节', '2', '7');
INSERT INTO `sys_holiday` VALUES (5, '2021-09-20 00:00:00', '中秋节', '2', '1');
INSERT INTO `sys_holiday` VALUES (6, '2022-12-10 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (7, '2021-06-13 00:00:00', '端午节', '2', '7');
INSERT INTO `sys_holiday` VALUES (8, '2022-06-25 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (9, '2022-01-08 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (10, '2021-10-01 00:00:00', '国庆节', '2', '5');
INSERT INTO `sys_holiday` VALUES (11, '2022-06-18 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (12, '2022-12-04 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (13, '2022-05-28 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (14, '2021-05-16 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (15, '2021-10-02 00:00:00', '国庆节', '2', '6');
INSERT INTO `sys_holiday` VALUES (16, '2022-04-04 00:00:00', '清明节', '2', '1');
INSERT INTO `sys_holiday` VALUES (17, '2022-05-08 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (18, '2022-09-24 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (19, '2022-01-03 00:00:00', '元旦', '2', '1');
INSERT INTO `sys_holiday` VALUES (20, '2021-03-13 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (21, '2021-04-04 00:00:00', '清明节', '2', '7');
INSERT INTO `sys_holiday` VALUES (22, '2021-01-10 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (23, '2021-04-03 00:00:00', '清明节', '2', '6');
INSERT INTO `sys_holiday` VALUES (24, '2022-10-03 00:00:00', '国庆节', '2', '1');
INSERT INTO `sys_holiday` VALUES (25, '2021-01-24 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (26, '2021-02-16 00:00:00', '初五', '2', '2');
INSERT INTO `sys_holiday` VALUES (27, '2022-03-13 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (28, '2021-05-30 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (29, '2022-11-26 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (30, '2021-01-02 00:00:00', '元旦', '2', '6');
INSERT INTO `sys_holiday` VALUES (31, '2022-05-03 00:00:00', '劳动节', '2', '2');
INSERT INTO `sys_holiday` VALUES (32, '2022-05-15 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (33, '2021-02-28 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (34, '2021-08-15 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (35, '2021-04-11 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (36, '2021-07-11 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (37, '2021-01-03 00:00:00', '元旦', '2', '7');
INSERT INTO `sys_holiday` VALUES (38, '2021-08-29 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (39, '2022-05-21 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (40, '2022-11-20 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (41, '2021-03-27 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (42, '2022-01-31 00:00:00', '除夕', '2', '1');
INSERT INTO `sys_holiday` VALUES (43, '2022-07-09 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (44, '2022-02-26 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (45, '2022-11-12 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (46, '2022-06-11 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (47, '2022-12-18 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (48, '2022-09-17 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (49, '2022-08-07 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (50, '2021-08-21 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (51, '2021-06-12 00:00:00', '端午节', '2', '6');
INSERT INTO `sys_holiday` VALUES (52, '2021-01-23 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (53, '2022-04-09 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (54, '2021-11-14 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (55, '2021-09-19 00:00:00', '中秋节', '2', '7');
INSERT INTO `sys_holiday` VALUES (56, '2021-09-05 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (57, '2022-07-16 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (58, '2022-03-05 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (59, '2022-06-12 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (60, '2022-02-19 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (61, '2021-02-14 00:00:00', '初三', '2', '7');
INSERT INTO `sys_holiday` VALUES (62, '2021-01-09 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (63, '2022-10-06 00:00:00', '国庆节', '2', '4');
INSERT INTO `sys_holiday` VALUES (64, '2022-07-10 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (65, '2021-12-12 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (66, '2022-03-06 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (67, '2022-04-16 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (68, '2021-10-24 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (69, '2021-10-16 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (70, '2022-06-03 00:00:00', '端午节', '2', '5');
INSERT INTO `sys_holiday` VALUES (71, '2022-10-02 00:00:00', '国庆节', '2', '7');
INSERT INTO `sys_holiday` VALUES (72, '2021-10-06 00:00:00', '国庆节', '2', '3');
INSERT INTO `sys_holiday` VALUES (73, '2021-09-11 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (74, '2022-02-06 00:00:00', '初六', '2', '7');
INSERT INTO `sys_holiday` VALUES (75, '2021-02-13 00:00:00', '初二', '2', '6');
INSERT INTO `sys_holiday` VALUES (76, '2022-09-03 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (77, '2021-03-21 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (78, '2022-07-24 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (79, '2021-07-03 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (80, '2021-07-31 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (81, '2021-06-20 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (82, '2021-02-27 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (83, '2021-08-22 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (84, '2021-03-06 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (85, '2022-02-03 00:00:00', '初三', '2', '4');
INSERT INTO `sys_holiday` VALUES (86, '2022-04-30 00:00:00', '劳动节', '2', '6');
INSERT INTO `sys_holiday` VALUES (87, '2021-06-19 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (88, '2021-07-25 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (89, '2022-12-25 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (90, '2021-12-18 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (91, '2022-11-27 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (92, '2022-04-17 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (93, '2021-05-01 00:00:00', '劳动节', '2', '6');
INSERT INTO `sys_holiday` VALUES (94, '2022-04-23 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (95, '2022-10-15 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (96, '2022-01-02 00:00:00', '元旦', '2', '7');
INSERT INTO `sys_holiday` VALUES (97, '2021-12-05 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (98, '2021-07-04 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (99, '2022-09-25 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (100, '2022-03-12 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (101, '2021-09-21 00:00:00', '中秋节', '2', '2');
INSERT INTO `sys_holiday` VALUES (102, '2021-09-25 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (103, '2022-06-19 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (104, '2022-12-24 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (105, '2022-01-09 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (106, '2022-10-16 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (107, '2021-02-12 00:00:00', '初一', '2', '5');
INSERT INTO `sys_holiday` VALUES (108, '2022-07-31 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (109, '2022-08-21 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (110, '2021-05-02 00:00:00', '劳动节', '2', '7');
INSERT INTO `sys_holiday` VALUES (111, '2022-07-17 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (112, '2021-08-08 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (113, '2022-01-01 00:00:00', '元旦', '2', '6');
INSERT INTO `sys_holiday` VALUES (114, '2021-11-28 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (115, '2021-07-24 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (116, '2022-01-22 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (117, '2021-11-13 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (118, '2021-06-14 00:00:00', '端午节', '2', '1');
INSERT INTO `sys_holiday` VALUES (119, '2021-10-04 00:00:00', '国庆节', '2', '1');
INSERT INTO `sys_holiday` VALUES (120, '2022-12-17 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (121, '2021-03-20 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (122, '2022-12-31 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (123, '2021-11-27 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (124, '2021-07-17 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (125, '2022-02-27 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (126, '2021-04-17 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (127, '2021-11-06 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (128, '2021-10-05 00:00:00', '国庆节', '2', '2');
INSERT INTO `sys_holiday` VALUES (129, '2021-10-30 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (130, '2022-11-19 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (131, '2021-03-14 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (132, '2021-04-10 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (133, '2022-09-18 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (134, '2021-02-17 00:00:00', '初六', '2', '3');
INSERT INTO `sys_holiday` VALUES (135, '2021-06-05 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (136, '2021-05-04 00:00:00', '劳动节', '2', '2');
INSERT INTO `sys_holiday` VALUES (137, '2022-05-14 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (138, '2022-05-04 00:00:00', '劳动节', '2', '3');
INSERT INTO `sys_holiday` VALUES (139, '2022-02-13 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (140, '2022-12-03 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (141, '2021-06-27 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (142, '2021-10-23 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (143, '2022-11-13 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (144, '2021-05-29 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (145, '2022-08-13 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (146, '2022-11-06 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (147, '2022-05-02 00:00:00', '劳动节', '2', '1');
INSERT INTO `sys_holiday` VALUES (148, '2021-04-18 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (149, '2021-05-23 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (150, '2021-01-01 00:00:00', '元旦', '2', '5');
INSERT INTO `sys_holiday` VALUES (151, '2022-12-11 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (152, '2021-02-21 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (153, '2021-05-09 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (154, '2022-03-20 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (155, '2022-03-26 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (156, '2022-05-22 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (157, '2021-06-06 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (158, '2022-10-23 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (159, '2022-10-29 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (160, '2021-02-06 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (161, '2022-07-02 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (162, '2022-10-04 00:00:00', '国庆节', '2', '2');
INSERT INTO `sys_holiday` VALUES (163, '2021-08-14 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (164, '2022-04-03 00:00:00', '清明节', '2', '7');
INSERT INTO `sys_holiday` VALUES (165, '2022-03-19 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (166, '2021-11-07 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (167, '2022-04-10 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (168, '2022-10-22 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (169, '2021-08-01 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (170, '2021-11-20 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (171, '2021-03-28 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (172, '2022-09-11 00:00:00', '中秋节', '2', '7');
INSERT INTO `sys_holiday` VALUES (173, '2021-01-16 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (174, '2022-07-23 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (175, '2021-12-04 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (176, '2022-07-30 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (177, '2021-07-10 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (178, '2022-02-12 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (179, '2021-08-28 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (180, '2021-08-07 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (181, '2021-12-11 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (182, '2021-05-03 00:00:00', '劳动节', '2', '1');
INSERT INTO `sys_holiday` VALUES (183, '2021-10-10 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (184, '2021-01-31 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (185, '2022-02-05 00:00:00', '初五', '2', '6');
INSERT INTO `sys_holiday` VALUES (186, '2021-10-17 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (187, '2022-06-26 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (188, '2022-09-04 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (189, '2022-01-16 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (190, '2022-03-27 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (191, '2022-02-04 00:00:00', '初四', '2', '5');
INSERT INTO `sys_holiday` VALUES (192, '2021-05-15 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (193, '2022-07-03 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (194, '2021-05-22 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (195, '2021-07-18 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (196, '2021-04-24 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (197, '2021-12-19 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (198, '2021-03-07 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (199, '2021-06-26 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (200, '2021-02-11 00:00:00', '除夕', '2', '4');
INSERT INTO `sys_holiday` VALUES (201, '2021-12-26 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (202, '2022-10-05 00:00:00', '国庆节', '2', '3');
INSERT INTO `sys_holiday` VALUES (203, '2022-09-12 00:00:00', '中秋节', '2', '1');
INSERT INTO `sys_holiday` VALUES (204, '2022-10-01 00:00:00', '国庆节', '2', '6');
INSERT INTO `sys_holiday` VALUES (205, '2022-10-07 00:00:00', '国庆节', '2', '5');
INSERT INTO `sys_holiday` VALUES (206, '2022-06-05 00:00:00', '端午节', '2', '7');
INSERT INTO `sys_holiday` VALUES (207, '2022-04-05 00:00:00', '清明节', '2', '2');
INSERT INTO `sys_holiday` VALUES (208, '2022-08-20 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (209, '2022-02-02 00:00:00', '初二', '2', '3');
INSERT INTO `sys_holiday` VALUES (210, '2022-09-10 00:00:00', '中秋节', '2', '6');
INSERT INTO `sys_holiday` VALUES (211, '2021-10-07 00:00:00', '国庆节', '2', '4');
INSERT INTO `sys_holiday` VALUES (212, '2021-09-12 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (213, '2021-11-21 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (214, '2022-01-23 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (215, '2021-04-05 00:00:00', '清明节', '2', '1');
INSERT INTO `sys_holiday` VALUES (216, '2021-01-30 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (217, '2022-11-05 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (218, '2022-08-27 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (219, '2021-09-04 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (220, '2021-10-31 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (221, '2021-12-25 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (222, '2022-05-29 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (223, '2022-02-01 00:00:00', '初一', '2', '2');
INSERT INTO `sys_holiday` VALUES (224, '2022-08-14 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (225, '2022-01-15 00:00:00', '周六', '1', '6');
INSERT INTO `sys_holiday` VALUES (226, '2021-05-05 00:00:00', '劳动节', '2', '3');
INSERT INTO `sys_holiday` VALUES (227, '2022-05-01 00:00:00', '劳动节', '2', '7');
INSERT INTO `sys_holiday` VALUES (228, '2022-10-30 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (229, '2021-01-17 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (230, '2022-08-28 00:00:00', '周日', '1', '7');
INSERT INTO `sys_holiday` VALUES (231, '2021-02-15 00:00:00', '初四', '2', '1');
排除节假日,计算日期差
SELECT id,start_time,end_time,secondcount,
CONCAT(FLOOR(secondcount/(3600*24)), '天', FLOOR(secondcount%(3600*24)/3600), '时', FLOOR((secondcount%3600)/60), '分', FLOOR(secondcount%3600%60), '秒') workTime
FROM(
SELECT t.id,start_time,end_time,
(TIMESTAMPDIFF(SECOND,start_time,end_time) - (select count(*) from sys_holiday where date < end_time and date >= start_time) * 24 * 60 * 60)
- TIMESTAMPDIFF(SECOND, start_time, IFNULL(DATE_ADD(a.date,INTERVAL 1 DAY), start_time))
+ TIMESTAMPDIFF(SECOND, end_time, IFNULL(DATE_ADD(b.date,INTERVAL 1 DAY), end_time)) as secondcount
FROM test t
LEFT JOIN sys_holiday a on date(start_time) = a.date
LEFT JOIN sys_holiday b on date(end_time) = b.date
) z
执行结果

校验
SELECT TIMESTAMPDIFF(SECOND,'2021-12-01 12:50:27','2021-12-04 00:00:00') id1, -- 212973
TIMESTAMPDIFF(SECOND,'2021-12-03 08:22:11','2021-12-04 00:00:00')+TIMESTAMPDIFF(SECOND,'2021-12-06 00:00:00','2021-12-06 17:54:19') id2, -- 120728
TIMESTAMPDIFF(SECOND,'2022-01-10 07:20:06','2022-01-11 22:55:13') id5, -- 142507
TIMESTAMPDIFF(SECOND,'2021-12-27 00:00:00','2021-12-28 16:55:25') id6 -- 147325

最后
如果数据多了,查询会比较慢
暂时想不出要怎么优化,又或者有什么其他方法来排除节假日。有小伙伴知道的话欢迎留言~
边栏推荐
- [learning notes] tool
- Traversal binary tree
- Shell script -- program conditional statements (conditional tests, if statements, case branch statements, echo usage, for loops, while loops)
- Esxi arm edition version 1.10 update
- Applets: lifecycle
- Group management and permission management
- RAID disk array
- Ubuntu MySQL setting remote access permissions
- Pictures are adaptive to the screen
- ---Stack & queue---
猜你喜欢

Result fill in the blank (dfs*c language)

PXE unattended installation management

Media set up live broadcast server

Network - transport layer (detailed version)

Custom component -- data listener

DHCP service

Applet creation component

shell脚本——sort、uniq、tr、数组排序、cut、eval命令配置

Esxi community network card driver

Results fill in the blank. How many days of national day are Sundays (solved by pure Excel)
随机推荐
Esxi community network card driver updated in March 2022
Result fill in the blank (dfs*c language)
Asynchronous programming promise
[learning notes] VIM editor
Custom components -- slots
DNS domain name resolution
VLAN的配置
Use powercli to create a custom esxi ISO image
FTP service
Blue bridge code error ticket
Monotonic queue, Luogu p1886 sliding window
OSI seven layer model
Custom components -- styles
232(母)转422(公)
Life cycle (process) of software testing
一、PXE概述和安装
joern运行后.joernindex数据库无内容
爬虫学习总结
[learning notes] coding ability
Custom component -- communication between parent and child components