Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL функция за намиране на броя на работните дни между две дати

Този израз -

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

изчислява броя на работните дни между началната дата @S и крайната дата @E.

Предполага се, че крайната дата (@E) не е преди началната дата (@S). Съвместим с DATEDIFF, тъй като една и съща начална и крайна дата дават нула работни дни. Игнорира празниците.

Низът от цифри е конструиран по следния начин. Създайте таблица с начални и крайни дни, като редовете трябва да започват с понеделник (WEEKDAY0), а колоните също трябва да започват с понеделник. Попълнете диагонала отгоре вляво надолу вдясно с всички 0 (т.е. има 0 работни дни между понеделник и понеделник, вторник и вторник и т.н.). За всеки ден започнете от диагонала (винаги трябва да е 0) и попълнете колоните до правилно, ден по ден. Ако кацнете в колона ден за почивни дни (неработен ден), броят на работните дни не се променя, той се пренася отляво. В противен случай броят на работните дни се увеличава с един. Когато стигнете до края на реда, върнете се в началото на същия ред и продължете, докато достигнете отново диагонала. След това преминете към следващия ред.

напр. Ако приемем, че събота и неделя не са работни дни -

<предварителен код> | M T W T F S S-|--------------M| 0 1 2 3 4 4 4T| 4 0 1 2 3 3 3W| 3 4 0 1 2 2 2T| 2 3 4 0 1 1 1F| 1 2 3 4 0 0 0S| 1 2 3 4 5 0 0S| 1 2 3 4 5 5 0

След това свържете 49-те стойности в таблицата в низа.

Моля, уведомете ме, ако откриете грешки.

-Редактиране на подобрена таблица:

<предварителен код> | M T W T F S S-|--------------M| 0 1 2 3 4 4 4T| 4 0 1 2 3 3 3W| 3 4 0 1 2 2 2T| 2 3 4 0 1 1 1F| 1 2 3 4 0 0 0S| 0 1 2 3 4 0 0S| 0 1 2 3 4 4 0

подобрен низ:'0123444401233334012222340111123400001234000123440'

подобрен израз:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да задам максимално време за изпълнение на mysql заявка?

  2. Настройване на Laravel на Mac php artisan мигриране грешка:Няма такъв файл или директория

  3. Вмъкване на данни с помощта на mysqli

  4. Местоположение на файла my.cnf в macOS

  5. MySQL потребителската база данни няма колони за пароли - Инсталиране на MySQL на OSX