10시 예약과 10시 30분 예약을 다르게 잡아도 겹친다
시작 시간이 다르다는 이유만으로 중복이 없다고 판단하면 10:00~11:00과 10:30~11:30을 놓칩니다. 두 예약은 같은 공간에서 30분 겹칩니다. 예약 ID 중복과 시간 구간의 충돌은 다른 검사입니다. 이 글은 같은 날·같은 공간의 시작과 종료를 비교하는 규칙을 설명합니다.
값을 바꿔 확인하기
입력값은 이 화면에서만 계산하며 서버에 전송하거나 저장하지 않습니다.
시간 구간은 끝을 포함하지 않도록 정하기
이 예시에서는 시작은 포함하고 종료는 포함하지 않습니다. 10:00~11:00 바로 뒤에 11:00~12:00이 오면 겹치지 않는 것으로 봅니다. 청소나 준비 시간이 필요한 운영이라면 종료에 그 시간을 더한 점유 종료를 따로 만듭니다. 고객에게 안내한 종료와 내부 점유 종료를 같은 뜻으로 섞지 않습니다.
겹침 = 기존 시작 < 새 종료 AND 새 시작 < 기존 종료
겹친 분 = MIN(기존 종료, 새 종료) - MAX(기존 시작, 새 시작)
두 조건이 모두 참일 때만 겹친 분을 계산합니다. 한쪽 조건만 확인하면 기존 예약을 완전히 감싸는 긴 예약이나 안쪽에 들어가는 짧은 예약을 잘못 처리할 수 있습니다.
네 가지 샘플을 대조하기
| 예약 | 공간 | 시간 | R-01과 비교 |
|---|---|---|---|
| R-01 | 회의실 A | 10:00~11:00 | 기준 |
| R-02 | 회의실 A | 10:30~11:30 | 30분 겹침 |
| R-03 | 회의실 A | 11:00~12:00 | 경계만 맞닿아 겹침 없음 |
| R-04 | 회의실 B | 10:30~11:30 | 다른 공간이므로 충돌 아님 |
화면 계산기는 같은 날·같은 공간이라고 가정합니다. 다른 날짜·공간을 입력하는 기능은 없으므로 실제 예약표에서는 먼저 날짜와 자원을 일치시킨 뒤 시간을 비교해야 합니다. 자정이 넘어가는 예약은 시간만 적지 말고 시작 날짜와 종료 날짜를 함께 기록합니다.
스프레드시트로 옮길 때
시작과 종료를 날짜·시간 값으로 저장합니다. 문자 9:00과 10:00을 가나다순으로 비교하면 시간 순서와 달라질 수 있습니다. 샘플 CSV를 가져온 뒤 프로그램이 날짜·시간으로 읽었는지 확인하고, 그렇지 않으면 해당 열의 입력 형식을 지정합니다. 지역 설정에 따라 날짜 표기 해석이 달라질 수 있으므로 샘플 네 행부터 대조합니다.
=AND(C2<D3,C3<D2)
위 식은 C열이 시작, D열이 종료일 때 2행과 3행을 비교하는 최소 예입니다. 실제로는 같은 공간과 날짜인지 확인하는 조건을 더합니다. 종료가 시작보다 빠르거나 같으면 먼저 입력 오류로 분리하고 겹침 여부를 계산하지 않습니다. 빈칸은 예약 가능한 시간으로 처리하지 않습니다.
준비 시간 15분을 넣으면 달라지는 것
R-01이 11시에 끝나도 청소에 15분이 필요하다면 내부 점유 종료는 11:15입니다. R-03의 11시 시작과는 15분 충돌합니다. 준비 시간을 모든 예약에 일괄 적용할지 서비스별로 다르게 둘지 정하고, 정책이 바뀐 날을 기록합니다. 샘플의 경계 규칙을 실제 이용약관이나 고객 약속으로 자동 적용해서는 안 됩니다.
검사 결과가 충돌이면 무엇을 보존하나
기존 예약을 지우고 새 예약만 남기지 않습니다. 기존 ID·새 요청 ID·충돌 구간·대체 가능 시간·확인 담당을 남깁니다. 고객의 확인 전에는 새 시간을 확정으로 바꾸지 않고 확인 필요로 둡니다. 이 검사는 충돌 후보를 찾는 작업이며 고객 동의나 결제 상태를 확인하는 절차를 대신하지 않습니다.
화면 계산은 입력한 시간에만 반응하고 예약을 저장하거나 다른 사람에게 알리지 않습니다. 배포 검사에서는 30분 겹침, 경계 접촉, 서로 떨어진 구간, 종료 역전을 비교합니다. 실제 예약 시스템과 연결하는 자동화는 이 자료에 포함하지 않았습니다.