>데이터 베이스 >MySQL 튜토리얼 >내장 함수 없이 MySQL에서 두 날짜 사이의 근무일을 계산하는 방법은 무엇입니까?

내장 함수 없이 MySQL에서 두 날짜 사이의 근무일을 계산하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-16 17:56:10209검색

How to Calculate Working Days Between Two Dates in MySQL Without a Built-in Function?

MySQL에서 두 날짜 사이의 근무일을 계산하는 방법

Excel과 같이 많이 사용되는 스프레드시트 프로그램에서는 두 날짜 사이의 영업일 수를 계산하는 NETWORKDAYS() 함수를 제공합니다. 그러나 MySQL에는 유사한 내장 기능이 없습니다.

풀이: 수학적 표현

MySQL에서 두 날짜 사이의 영업일 수를 계산하려면 다음 표현식을 사용할 수 있습니다.

<code class="language-sql">5 * (DATEDIFF(@E, @S) DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY(@S) + WEEKDAY(@E) + 1, 1)</code>

설명:

  • DATEDIFF(@E, @S): 종료 날짜(@E)와 시작 날짜(@S) 사이의 일수 차이를 계산합니다.
  • DIV 7: 날짜 사이의 주 수를 구하려면 차이를 7로 나눕니다.
  • 5: 주 수에 5를 곱하여 근무일 수를 구합니다.
  • MID(): 시작 날짜와 종료 날짜를 기준으로 문자열에서 관련 숫자 하위 집합을 추출합니다. 표현식에 사용되는 특정 문자열은 다양한 시작 날짜와 종료 날짜 조합 사이의 근무일 수를 기준으로 작성됩니다.

가정 및 제한:

  • 종료일(@E)은 시작일(@S)보다 이전일 수 없습니다.
  • 이 기능은 공휴일을 무시합니다.
  • 이 표현식은 월요일이 한 주의 첫날이라고 가정합니다.

예:

'2023-03-06'(@S)과 '2023-03-10'(@E) 사이의 영업일 수를 계산하려면 다음 쿼리를 사용하면 됩니다.

<code class="language-sql">SELECT 5 * (DATEDIFF('2023-03-10', '2023-03-06') DIV 7) + MID('0123444401233334012222340111123400001234000123440', 7 * WEEKDAY('2023-03-06') + WEEKDAY('2023-03-10') + 1, 1) AS num_working_days;</code>

이 쿼리는 두 날짜 사이의 영업일 수인 5를 반환합니다.

위 내용은 내장 함수 없이 MySQL에서 두 날짜 사이의 근무일을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.