한 청구서에는 11월 1일부터 20일까지, 다른 청구서에는 11월 16일부터 30일까지라고 적혀 있습니다. 각각 20일과 15일이니 두 기간을 합치면 35일일까요? 기록된 일수를 더하면 35일이지만, 적어도 한 기간에 들어 있는 서로 다른 날짜는 30일입니다. 16일부터 20일까지를 두 번 더했기 때문입니다.
이 글은 날짜를 세는 계산입니다. 실제 청구액이 부당하게 중복됐는지 판단하는 계산은 아닙니다. 서로 다른 계약이나 서비스라면 같은 날짜에 비용이 각각 발생할 수 있습니다.
두 기간의 시작일과 종료일을 모두 포함합니다
가상 사례의 연도는 2026년, 월은 11월입니다. A기간은 11월 1일~20일, B기간은 11월 16일~30일이며 두 기간 모두 시작일과 종료일을 포함한다고 정합니다. A는 20−1+1=20일, B는 30−16+1=15일입니다. 시작과 끝이 같은 하루짜리 기간도 이 규칙에서는 1일입니다.
실제 명세서가 종료일을 포함하지 않는 규칙이라면 여기의 일수를 그대로 쓰면 안 됩니다. 숙박의 박수, 시간 단위 사용료, 특정 시각부터 24시간을 세는 상품도 다른 문제입니다. 먼저 청구서나 계약의 날짜 경계와 단위를 확인한 뒤 두 줄에 같은 규칙을 적용해야 합니다.

공통으로 들어 있는 날짜는 16일부터 20일까지입니다
두 시작일 중 늦은 날인 16일부터, 두 종료일 중 빠른 날인 20일까지가 공통 구간입니다. 20−16+1=5일입니다. 달력에서 직접 세면 16·17·18·19·20일, 다섯 날짜입니다.
전체를 겹치지 않는 구간으로 나누어 보아도 같은 답이 나옵니다. 1~15일은 A에만 있는 15일, 16~20일은 양쪽에 있는 5일, 21~30일은 B에만 있는 10일입니다. 이를 한 번씩만 세면 15+5+10=30일입니다.

각 기간의 일수에서 겹친 일수를 한 번 뺍니다
| 구분 | 날짜 범위 | 일수 |
|---|---|---|
| A기간 | 1일~20일 | 20일 |
| B기간 | 16일~30일 | 15일 |
| 공통 날짜 | 16일~20일 | 5일 |
| 어느 한쪽에라도 있는 날짜 | 1일~30일 | 20+15−5=30일 |
A와 B의 시작일을 각각 sA, sB, 종료일을 eA, eB라고 쓰겠습니다. 날짜 차이는 실제 날짜끼리 뺀 일수입니다. 월을 넘는 경우 ‘일’ 부분의 숫자만 빼지 않습니다.
- A 일수 = eA − sA + 1
- B 일수 = eB − sB + 1
- 겹친 일수 = max(0, min(eA, eB) − max(sA, sB) + 1)
- 서로 다른 날짜 수 = A 일수 + B 일수 − 겹친 일수
min은 종료일 중 빠른 날, max는 시작일 중 늦은 날을 고르는 역할입니다. 두 기간이 떨어져 있으면 차이가 음수가 될 수 있어 마지막에 0과 비교합니다. 다만 이 0 하한은 잘못 입력한 기간을 정상으로 바꾸는 장치가 아닙니다.

맞닿는 날과 포함되는 기간도 확인합니다
A가 1~10일이고 B가 10~20일이면 A는 10일, B는 11일입니다. 10일 하루가 공통이므로 합집합은 10+11−1=20일입니다. 종료일과 다음 시작일이 같은 경우를 무조건 ‘겹침 없음’으로 처리하면 여기서는 하루가 틀어집니다.
반대로 A가 1~10일, B가 11~20일이면 공통 날짜는 0일이고 합집합은 20일입니다. B가 A 안에 완전히 들어 있는 경우도 살펴볼 수 있습니다. A가 1~30일, B가 10~12일이면 공통은 B 전체인 3일이며, 합집합은 30+3−3=30일입니다. 두 기간이 완전히 같다면 합집합은 그 기간 하나의 일수와 같습니다.

처음 날짜부터 마지막 날짜까지 세면 빈 날이 섞일 수 있습니다
A가 1~5일이고 B가 10~15일이면 각각 5일과 6일입니다. 겹침은 없어서 서로 다른 날짜 수는 11일입니다. 첫 날짜 1일부터 마지막 날짜 15일까지의 폭은 15일이지만, 어느 기간에도 속하지 않는 6~9일의 4일을 포함합니다. 합집합의 일수와 처음부터 끝까지의 폭은 항상 같지 않습니다.

스프레드시트에서는 네 날짜를 먼저 검사합니다
A2에 A 시작일, B2에 A 종료일, C2에 B 시작일, D2에 B 종료일을 실제 날짜 값으로 넣었다면 겹침 계산식은 =MAX(0,MIN(B2,D2)-MAX(A2,C2)+1)입니다. 겹친 일수를 E2에 두면 서로 다른 날짜 수는 =(B2-A2+1)+(D2-C2+1)-E2로 구할 수 있습니다.
이 수식을 쓰기 전에 네 칸이 모두 유효한 날짜인지, 각 시작일이 종료일보다 늦지 않은지 확인합니다. 비어 있는 칸은 ‘사용기간 없음’이나 0일로 간주하지 않습니다. 문자로 저장된 날짜나 시간까지 포함된 값도 먼저 정리해야 합니다. 같은 시간대의 날짜 단위로 비교하고, 실제 청구 규칙에 맞는 포함·제외 조건을 일관되게 적용하세요.
날짜의 중복과 돈의 중복은 따로 판단합니다
겹치는 5일을 찾았다고 해서 어느 청구액에서든 5일분을 바로 빼거나 환급액을 확정할 수 있는 것은 아닙니다. 같은 서비스인지, 같은 대상에 대한 청구인지, 요금이 일할 계산되는지, 고정요금이 있는지와 각 계약의 유효기간을 따로 확인해야 합니다.
이사 전후 두 집의 월세처럼 같은 날짜에 서로 다른 계약상 비용이 생기는 경우에는 총 월세와 추가 부담액을 나누는 계산이 필요합니다. 한 집의 생활비를 입주 날짜에 따라 나누려면 중도 입주자의 공동 주거비 배분처럼 인원과 배분 기준까지 정해야 합니다. 먼저 원래 기간 네 날짜와 포함 규칙을 남기고, 금액 조정은 해당 청구 근거를 확인한 뒤 진행하세요.
날짜 계산의 근거
Microsoft의 DAYS 함수 안내는 날짜 값에서 종료일−시작일로 차이를 구하는 원리를 설명합니다. 본문의 +1은 양끝을 포함한다고 정한 이 사례의 조건입니다. MIN과 MAX 안내의 작은 값·큰 값 선택 기능을 이용해 위 교집합 수식을 직접 구성했습니다. 함수 설명은 모든 청구서에 양끝 포함 규칙이 적용된다는 법적 근거가 아닙니다.
자료·계산 검토일: 2026년 11월 6일 KST. 수치는 가상 조건의 산술 예시입니다.