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

Funkce MySQL pro zjištění počtu pracovních dnů mezi dvěma daty

Tento výraz -

5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400012345001234550', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)

vypočítá počet pracovních dnů mezi počátečním datem @S a koncovým datem @E.

Předpokládá, že koncové datum (@E) není před počátečním datem (@S). Kompatibilní s DATEDIFF v tom, že stejné datum zahájení a datum ukončení udává nula pracovních dnů. Ignoruje svátky.

Řetězec číslic je konstruován následovně. Vytvořte tabulku počátečních a koncových dnů, řádky musí začínat pondělím (WEEKDAY0) a sloupce musí také začínat pondělím. Vyplňte úhlopříčku zleva shora dolů doprava všemi 0 (tj. mezi pondělím a pondělím je 0 pracovních dnů, úterý a úterý atd.). Pro každý den začněte na úhlopříčce (musí být vždy 0) a vyplňte sloupce do správně, jeden den po druhém. Pokud se dostanete na sloupec víkendový den (nepracovní den), počet pracovních dnů se nemění, je přenášen zleva. V opačném případě se počet pracovních dnů zvýší o jeden. Když se dostanete na konec řady, vraťte se na začátek stejné řady a pokračujte, dokud se znovu nedostanete na úhlopříčku. Poté přejděte na další řádek.

Např. Za předpokladu, že sobota a neděle nejsou pracovní dny -

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 4 4
T| 4 0 1 2 3 3 3
W| 3 4 0 1 2 2 2
T| 2 3 4 0 1 1 1
F| 1 2 3 4 0 0 0
S| 1 2 3 4 5 0 0
S| 1 2 3 4 5 5 0

Poté zřetězte 49 hodnot v tabulce do řetězce.

Pokud najdete nějaké chyby, dejte mi prosím vědět.

-Upravit vylepšenou tabulku:

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 4 4
T| 4 0 1 2 3 3 3
W| 3 4 0 1 2 2 2
T| 2 3 4 0 1 1 1
F| 1 2 3 4 0 0 0
S| 0 1 2 3 4 0 0
S| 0 1 2 3 4 4 0

vylepšený řetězec:'01234444401233334012222340111123400001234000123440'

vylepšený výraz:

5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)


  1. změnit sloupec přetažení tabulky v databázi Oracle

  2. Datový model pro aplikaci počasí

  3. Jak otevřít tabulku v návrhovém zobrazení v aplikaci Access

  4. Jak změnit kořenové heslo MySQL nebo MariaDB v Linuxu