Count days between two dates, excluding weekends (MySQL only)

后端 未结 5 623
离开以前
离开以前 2020-11-28 16:26

I need to calculate the difference (in days) between two dates in MySQL excluding weekends (Saturday and Sunday). That is, the difference in days minus the number of Saturda

5条回答
  •  庸人自扰
    2020-11-28 16:44

    IT my helpful to you

    The bellow logic only show the how many days like

    sun   mon
    
    1      2 .....................
    
    DELIMITER $$
    DROP FUNCTION IF EXISTS `xx`.`get_weekday` $$
    CREATE FUNCTION `xx`.`get_weekday` (first_date date, last_date date, curr_week_day int) RETURNS INT
    BEGIN
    DECLARE days_tot int;
    DECLARE whole_weeks int;
    DECLARE first_day int;
    DECLARE last_day int;
    SET whole_weeks = FLOOR(DATEDIFF(last_date,first_date)/7) ;
    SET first_day = WEEKDAY(first_date) ;
    SET last_day = WEEKDAY(last_date)  ;
    IF curr_week_day  BETWEEN first_day AND  last_day
               AND  last_day > first_day
               OR ( curr_week_day BETWEEN last_day AND first_day
               AND  last_day <  first_day  )
    THEN SET days_tot = whole_weeks + 1;
    ELSE SET days_tot = whole_weeks ;
    END IF;
    RETURN  days_tot;
    END $$
    DELIMITER ;
    
        SELECT
          `xx`.`get_weekday` ('2009-01-01', '2009-07-20', 0) as mo,
          `xx`.`get_weekday` ('2009-01-01', '2009-07-20', 1) as tu,
          `xx`.`get_weekday` ('2009-01-01', '2009-07-20', 2) as we,
          `xx`.`get_weekday` ('2009-01-01', '2009-07-20', 3) as th,
          `xx`.`get_weekday` ('2009-01-01', '2009-07-20', 4) as fr,
          `xx`.`get_weekday` ('2009-01-01', '2009-07-20', 5) as sa,
          `xx`.`get_weekday` ('2009-01-01', '2009-07-20', 6) as su;
    

    Table based query

    ip:

    Weekday count
    2        10
    3         5
    
    
    SELECT WEEKDAY( `req_date_time` ) AS weekday, COUNT( id ) AS id
    FROM `ffffd`
    WHERE (
    `req_date_time` >= '2014-12-01'
    AND `req_date_time` <= '2014-12-31'
    )
    AND WEEKDAY( `req_date_time` ) != '1'
    GROUP BY WEEKDAY( `req_date_time` ) 
    

提交回复
热议问题