>데이터 베이스 >MySQL 튜토리얼 >주말을 제외하고 MySQL에서 날짜 사이의 영업일을 계산하는 방법은 무엇입니까?

주말을 제외하고 MySQL에서 날짜 사이의 영업일을 계산하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 22:39:03586검색

How to Calculate Business Days Between Dates in MySQL Excluding Weekends?

주말을 제외하고 MySQL에서 날짜 사이의 영업일 계산

주말을 제외하고 두 날짜 사이의 날짜 차이를 확인하기 위해 MySQL의 WEEKDAY를 사용합니다. () 기능. 이 함수는 특정 날짜의 요일, 즉 일요일로 시작하는 주의 요일을 결정합니다. 이를 바탕으로 특정 요구 사항을 수용하는 사용자 정의 함수를 고안할 수 있습니다.

TOTAL_WEEKDAYS() 함수 만들기:

TOTAL_WEEKDAYS()라는 함수를 설정합니다. 두 개의 DATE 매개변수(date1 및 date2)를 허용합니다. 이 기능은 주말과 특별한 경우를 고려하여 평일 간의 차이를 꼼꼼하게 계산합니다.

CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT
RETURN ABS(DATEDIFF(date2, date1)) + 1  -- Total days
     - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),  -- Weekdays between
                    ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
     - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)  -- Account for edge case
     - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);  -- Account for edge case

사용 및 테스트:

이 기능을 활용하기 위해 두 가지를 제공합니다. 영업일 차이를 확인하려는 DATE 변수 date1 및 date2. 출력에서는 주말을 제외합니다.

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') AS weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') AS weekdays2;

결과:

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |

이 예에서는 시작 날짜가 '2013-08-03'이고 '2013-08-21' 종료일은 영업일 기준 13일입니다. 이 함수는 계산 시 주말을 정확하게 제외합니다.

위 내용은 주말을 제외하고 MySQL에서 날짜 사이의 영업일을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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