sql >> Database >  >> RDS >> Mysql

tel zaterdagen vóór 15 data als werkdagen en sla andere over

U kunt de onderstaande code gebruiken om de werkdagen te tellen volgens uw vereisten -

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;

Hier is de viool. Naast deze code moet je ook voor vakanties zorgen.



  1. Hoe dubbele rijen uit een MySQL-tabel te verwijderen

  2. waarom retourneert sum() query resultaat met meer decimalen?

  3. Waarom krijg ik Ongeldige invoersyntaxis voor het type integer in postgresql bij het importeren van een CSV?

  4. Converteren tussen onlogisch opgemaakte datums (veranderen /slash/ naar -dash- )