【问题标题】:How to calculate number of days between two dates in Mysql excluding weekends (saturday and sunday)? [duplicate]如何计算Mysql中两个日期之间的天数,不包括周末(周六和周日)? [复制]
【发布时间】:2018-08-06 23:37:27
【问题描述】:

如何返回两个日期之间的天数减去该期间的周六和周日数? mysql 上的 DATEDIFF 函数给了我天数,但不排除周末。

例如,我有两列,想添加第三列,这是两者之间的区别。

如果有任何帮助,我将不胜感激。

【问题讨论】:

标签: mysql sql


【解决方案1】:

试试这个

声明@Date1 日期时间,@Date2 日期时间;

选择@Date1 = '8/1/2018',@Date2 = '8/7/2018'

选择 Datediff(dd, @Date1 , @Date2) - (Datediff(wk, @Date1 , @Date2) * 2) - Datepart(dw, @Date1) = 1 Then 1 Else 0 End + Datepart(dw, @Date2) = 1 Then 1 Else 0 End

的情况

【讨论】:

    【解决方案2】:
    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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多