我公司的政策是,我们将15天前的星期六计算为工作日,15天后的星期六计算为公司假日。请告诉我,在查询中,可以计算每月的工作日跳过15天前的所有星期日和星期六

最佳答案

您可以使用下面的代码根据您的要求计算工作日-

CREATE FUNCTION FN_CNT_Working_days(StartDate DATE,
                                    EndDate   DATE)
RETURNS INT
BEGIN
     DECLARE WORKING_DAYS INT;
     SELECT
   (DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) + 1)
  -(FLOOR(DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16)))/7) * 2)
  -(CASE WHEN DAYNAME(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) = 'Sunday' THEN 1 ELSE 0 END)
  -(CASE WHEN DAYNAME(EndDate) = 'Saturday' THEN 1 ELSE 0 END)
   +
   (DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate) + 1)
  -(FLOOR(DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate)/7))
  -(CASE WHEN DAYNAME(StartDate) = 'Sunday' THEN 1 ELSE 0 END)
     INTO WORKING_DAYS;

     RETURN (WORKING_DAYS);
END;

Here是小提琴。此外,您还需要注意与此代码一起度假。

关于mysql - 将15个日期之前的星期六计算为工作日,并跳过其他工作日,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58425598/

10-13 00:59