标签:dayofweek week end dateto SQL datefrom when MySQL 工作日
限制条件:只能计算同一年的工作日,如果您需要跨年计算,请输入2次即可。
DROP FUNCTION IF EXISTS `workdaynum`; DELIMITER $$ CREATE FUNCTION `workdaynum`(`datefrom` date,`dateto` date) RETURNS int(20) NO SQL BEGIN declare days int default 1; if (datefrom > dateto or year(datefrom) != year(dateto)) then return -1; end if; set days = case when week(dateto)-week(datefrom) = 0 then dayofweek(dateto) - dayofweek(datefrom) + 1 - case when (dayofweek(datefrom) > 1 and dayofweek(dateto) < 7) then 0 when (dayofweek(datefrom) = 1 and dayofweek(dateto) =7) then 2 else 1 end else (week(dateto)-week(datefrom)-1) * 5 + case when dayofweek(datefrom) = 1 then 5 when dayofweek(datefrom) = 7 then 0 else 7 - dayofweek(datefrom) end + case when dayofweek(dateto) = 1 then 0 when dayofweek(dateto) = 7 then 5 else dayofweek(dateto) - 1 end end; return days; end$$ DELIMITER ;
测试:
标签:dayofweek,week,end,dateto,SQL,datefrom,when,MySQL,工作日 来源: https://www.cnblogs.com/shenyixin/p/14846556.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。