CREATE TABLE workdays (
id INT PRIMARY KEY AUTO_INCREMENT,
workday DATE NOT NULL,
INDEX idx_workday(workday)
);
-- 插入2019年至2025年的工作日
INSERT INTO workdays(workday)
SELECT DATE_ADD('2019-01-01', INTERVAL a.seq DAY) AS workday
FROM (
SELECT 0 AS seq 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
) AS a,
(
SELECT 0 AS seq UNION ALL SELECT 10 UNION ALL SELECT 20
) AS b
WHERE DATE_ADD('2019-01-01', INTERVAL a.seq + b.seq DAY) BETWEEN '2019-01-01' AND '2025-12-31'
AND WEEKDAY(DATE_ADD('2019-01-01', INTERVAL a.seq + b.seq DAY))
通过以上代码,我们创建了一个名为workdays的表格并插入了2019年至2025年的工作日。代码中的WEEKDAY函数用于计算日期所在星期中的工作日编号,0表示周一,1表示周二,以此类推,4表示周五。当工作日编号小于5(即周一至周五)时,才插入记录。这样我们就得到了一个包含每个工作日的表格。
当需要计算指定时间段内的工作日数量时,可以使用以下代码:
SELECT COUNT(*) FROM workdays WHERE workday BETWEEN '2020-01-01' AND '2020-12-31';
以上代码将返回2020年的工作日数量。通过工作日表,我们可以方便地计算各种时间段内的工作日数量,进而对数据进行统计和分析。