sql >> Databáze >  >> RDS >> Mysql

počítejte soboty před 15 daty jako pracovní dny a ostatní vynechejte

Níže uvedený kód můžete použít k počítání pracovních dnů podle vašeho požadavku -

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;

Zde jsou housle. Spolu s tímto kódem se také musíte postarat o svátky.



  1. MySQL Connector/Python - vložte proměnnou pythonu do tabulky MySQL

  2. Nejlepší způsob, jak uložit vztah many-to-many v MySQL?

  3. Vyloučit výsledky řádků, které mají v libovolném poli hodnotu NULL?

  4. php/mysql s více dotazy