首页 >数据库 >mysql教程 >如何在没有内置函数的情况下计算 MySQL 中两个日期之间的工作日?

如何在没有内置函数的情况下计算 MySQL 中两个日期之间的工作日?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-16 17:56:10214浏览

How to Calculate Working Days Between Two Dates in MySQL Without a Built-in Function?

在MySQL中计算两个日期之间工作日的方法

许多流行的电子表格程序,例如Excel,都提供NETWORKDAYS()函数来计算两个日期之间工作日的天数。但是,MySQL没有类似的内置函数。

解决方案:数学表达式

要在MySQL中计算两个日期之间工作日的天数,可以使用以下表达式:

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>

解释:

  • DATEDIFF(@E, @S):计算结束日期(@E)和开始日期(@S)之间的天数差。
  • DIV 7:将差值除以7以获得日期之间的周数。
  • 5:将周数乘以5以获得工作日的天数。
  • MID():根据开始日期和结束日期从字符串中提取相关的数字子集。表达式中使用的特定字符串是根据不同开始日期和结束日期组合之间工作日的天数构建的。

假设和限制:

  • 结束日期(@E)不能早于开始日期(@S)。
  • 此函数忽略节假日。
  • 此表达式假设星期一是一周的第一天。

示例:

要计算'2023-03-06'(@S)和'2023-03-10'(@E)之间工作日的天数,可以使用以下查询:

<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>

此查询将返回两个日期之间工作日的天数,即5。

以上是如何在没有内置函数的情况下计算 MySQL 中两个日期之间的工作日?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn