mysql如何使用工作日表

2023年 8月 10日 64.6k 0

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年的工作日数量。通过工作日表,我们可以方便地计算各种时间段内的工作日数量,进而对数据进行统计和分析。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论