MySQL 근무일 계산 기능
Excel의 NETWORKDAYS() 함수는 지정된 두 날짜 사이의 근무일 수를 효율적으로 계산할 수 있습니다. MySQL에서는 유사한 기능이 필요한 경우가 많으며, 특히 단순성을 위해 휴일을 제외하는 기능이 필요합니다.
한 가지 방법은 다음 표현을 사용하는 것입니다.
<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>
이 표현을 효과적으로 사용하려면:
제공된 숫자 문자열은 월요일부터 시작하여 행과 열로 배열된 시작 및 종료 날짜 테이블을 생성하여 구성됩니다. 테이블은 대각선 방향으로 0으로 채워져 동일한 요일 유형 간에 근무일이 없음을 나타냅니다(예: 월요일부터 월요일까지).
일별 근무일수는 오른쪽 행을 따라 대각선으로 이동하여 계산됩니다. 휴무일(주말)이 발생하는 경우 숫자는 변경되지 않습니다. 그렇지 않으면 1씩 증가합니다. 라인의 끝에 도달하면 카운터가 재설정되고 대각선에 다시 도달할 때까지 프로세스가 계속됩니다.
예를 들어 토요일과 일요일이 휴무일이라고 가정하면 다음과 같습니다.
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 |
이 테이블의 49개 값을 연결하면 표현식에 사용되는 문자열이 생성됩니다.
이 솔루션은 휴일을 고려하지 않지만 MySQL에서 두 날짜 사이의 영업일 수를 효율적으로 계산할 수 있습니다.
위 내용은 휴일 테이블을 사용하지 않고 MySQL에서 두 날짜 사이의 영업일을 어떻게 효율적으로 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!