gpt4 book ai didi

mysql - 工作日计算查询-工作但无法理解

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:26 25 4
gpt4 key购买 nike

我想计算一年的工作日数(不包括周六和周日),并从网络上获得了这个查询及其工作..但我无法从 MID 部分理解这个查询..任何人都可以帮助我理解这个...

SELECT 5 * (DATEDIFF('2015-12-31', '2015-01-01') DIV 7) +
MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2015-12-31') +
WEEKDAY('2015-01-01') + 1, 1)

我无法理解

MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY('2015-12-31') +
WEEKDAY('2015-01-01') + 1, 1)

最佳答案

WEEKDAY('2015-12-31')WEEKDAY('2015-01-01') 计算开始和结束是星期几年,0 = 星期一,6 = 星期日。对于 2015 年,它们都是 6(星期日)。所以 MID 的中间参数是 7 * 6 + 6 + 1,即 49。

长字符串的第 49 个字符是 0。所以这意味着它将向表达式的其余部分添加零。

此表达式的目的是根据一年中的第一天和最后一天是星期几来调整工作日计数。 2015 年都不是工作日,所以加零。现在考虑 2016 年。2016 年 1 月 1 日是星期一 (weekday=1),2016 年 12 月 31 日是星期二 (weekday=2)。 7*1+2+1 等于 10。长字符串的第十个字符是 1。所以它会增加一个工作日……凭直觉我们可以看到这是因为 2016 年是闰年,所以这一年多了一天。等等。对于一年中每个可能的开始日和结束日,长字符串对要添加多少个工作日的调整进行编码。我想该字符串是通过反复试验发现的。

关于mysql - 工作日计算查询-工作但无法理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31555920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com