Excel具有NETWORKDAYS()函数,用于查找两个日期之间的工作日数.

有人对MySQL有类似的功能吗?由于假期增加了复杂性,解决方案不必处理假期.

推荐答案

这句话-

5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)

计算开始日期@S和结束日期@E之间的工作日数.

假设结束日期(@E)不早于开始日期(@S).

数字串的构造如下.创建一个表

例如,假设周六和周日不是工作日-

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 4 4
T| 4 0 1 2 3 3 3
W| 3 4 0 1 2 2 2
T| 2 3 4 0 1 1 1
F| 1 2 3 4 0 0 0
S| 1 2 3 4 5 0 0
S| 1 2 3 4 5 5 0

然后将表中的49个值连接到字符串中.

如果你发现任何漏洞,请告诉我.

-编辑

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 4 4
T| 4 0 1 2 3 3 3
W| 3 4 0 1 2 2 2
T| 2 3 4 0 1 1 1
F| 1 2 3 4 0 0 0
S| 0 1 2 3 4 0 0
S| 0 1 2 3 4 4 0

改进的字符串:"012344440123333401223401111123400001234000123440"

改进的表达:

5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)

Mysql相关问答推荐

AWS RDS上的MySQL复制错误:超级权限或REPLICATION_SLAVE_ADMIN权限的访问被拒绝

MySQL:一个查询中的SELECT语句,用于从一个表中检索所有数据,并仅从另一个表中检索一个数据

子查询是否可以按主查询中的列进行分组?

Group_CONCAT CASE 乘法输出

将 Cloud Function (nodejs) 连接到 CloudSQL mySQL 数据库

如何使用sql查询在日期列中按值和最大值分组的表中添加列?

有没有比使用 MySQL 计划事件更好的方法来更新我的数据库表中的列?

MySQL 使用了错误的索引

MYSQL:如何根据之前的相关记录获取记录

使用 DISTINCT 时无法从数据库中查询所有数据

提取 MySQL 5.7 连续值的差异

进行 MySQL COUNT 查询

通过 Gorm 查询模型

不是唯一的表/别名

有什么方法可以显示`gunzip < database.sql.gz | 的进度? mysql ...`进程?

WHERE 子句中的条件顺序会影响 MySQL 性能吗?

如何在 python 中逐行获取 MySQL ResultSet

MySQL 更新连接表

设计用户角色和权限系统的最佳实践?

我在哪里可以下载 mysql jdbc jar?