sql >> Databasteknik >  >> RDS >> Mysql

räkna lördagar före 15 datum som arbetsdagar och hoppa över andra

Du kan använda koden nedan för att räkna arbetsdagarna enligt dina krav -

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;

Här är fiolen. Du måste också ta hand om semester tillsammans med denna kod.



  1. Fel vid körning av python manage.py syncdb lokalt, men inget fel vid körning av samma kommando via Heroku

  2. Hur testar man läs-/skrivbehörigheter för katalogen Oracle?

  3. hur man raderar varje post utom en per timme

  4. Är Percona bakåtkompatibel med MySQL? The Ruby in Rails Case