如何计算mysql中两个日期之间的天数,不包括周末(周六和周日)?

oaxa6hgo  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(885)

这个问题在这里已经有答案了

mysql函数查找两个日期之间的工作日数(33个答案)
两年前关门了。
如何返回两个日期之间的天数减去该时间段内周六和周日的天数?mysql上的datediff函数给出了天数,但不排除周末。
例如,我有两个列,想添加第三个列,它是这两个列之间的差异。
如果有任何帮助,我将不胜感激。

dly7yett

dly7yett1#

试着用这个
声明@date1 datetime,@date2 datetime;
选择@date1='8/1/2018',@date2='8/7/2018'
选择datediff(dd,@date1,@date2)-(datediff(wk,@date1,@date2)*2)-case when datepart(dw,@date1)=1,然后选择1 else 0 end+case when datepart(dw,@date2)=1,然后选择1 else 0 end

kgsdhlau

kgsdhlau2#

DROP FUNCTION IF EXISTS GetNumberOfDays;

CREATE FUNCTION GetNumberOfDays(P_Date1 varchar(20), P_Date2 varchar(20))
   RETURNS int(100)
BEGIN
   DECLARE x         INT;
   DECLARE V_Date1   date;
   DECLARE V_Date2   date;
   SET V_Date1 := STR_TO_DATE(P_Date1, '%d/%m/%Y');
   SET V_Date2 := STR_TO_DATE(P_Date2, '%d/%m/%Y');
   SET x := 0;

   WHILE V_Date1 <= V_Date2
   DO
      IF (DAYOFWEEK(V_Date1) != 7 AND DAYOFWEEK(V_Date1) != 1)
      THEN
      BEGIN
          SET x = x + 1;
      END;
      END IF;

      SET V_Date1 := DATE_ADD(V_Date1, INTERVAL 1 DAY);
   END WHILE;

  RETURN x;
END;

SELECT GetNumberOfDays('01/08/2018', '11/08/2018')

相关问题