날짜와 시간을 선택했을 때 중복 되는 값이 있는지 체크하기 위한 조건
테이블에 들어있는 값
START_DATE 시작일자
START_TIME 시작시간
END_DATE 종료일자
END_TIME 종료시간
입력 값
IN_START_DATE 시작일자
IN_START_TIME 시작시간
IN_END_DATE 종료일자
IN_END_TIME 종료시간
시작일시에 01을 붙이고 종료일시에 00을 붙여 중복 체크
AND (
CONCAT(START_DATE,START_TIME,'01') BETWEEN CONCAT(IN_START_DATE,IN_START_TIME,'01') AND CONCAT(IN_END_DATE,IN_END_TIME,'00')
OR
CONCAT(END_DATE,END_TIME,'00') BETWEEN CONCAT(IN_START_DATE,IN_START_TIME,'01') AND CONCAT(IN_END_DATE,IN_END_TIME,'00')
OR
CONCAT(IN_START_DATE,IN_START_TIME,'01') BETWEEN CONCAT(START_DATE,START_TIME,'01') AND CONCAT(END_DATE,END_TIME,'00')
OR
CONCAT(IN_END_DATE,IN_END_TIME,'00') BETWEEN CONCAT(START_DATE,START_TIME,'01') AND CONCAT(END_DATE,END_TIME,'00')
)
IN_으로 중복 체크를 한 것을 보면 function이나 procedure에서 중복체크를 하기위해 만들어 썼던 것 같다.
'개발 > DATABASE' 카테고리의 다른 글
[SQL] 동적 쿼리 제어 (0) | 2023.08.16 |
---|---|
[SQL] 특정일 기준 일주일 구하기 (월-일, 일-토) (0) | 2023.08.16 |
[SQL] function에 임시테이블 생성하기 (0) | 2023.08.02 |
Lock wait timeout exceeded; try restarting transaction (0) | 2019.03.29 |