문제
풀이
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I INNER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.DATETIME > O.DATETIME
ORDER BY I.DATETIME
결과가 보호 시작일이 빠른 순으로 조회되어야하는데 WHERE절에서 DATETIME 컬럼을 이용해 바로 대소 비교를 해주면 된다.
해당 문제를 DATEDIFF와 TIMEDIFF로 접근하면 틀린다.
- DATEDIFF 오류 이유
DATEDIFF는 말 그대로 날짜 차이를 계산해주는 것이기 때문에, 날짜가 같은데 입양 시간이 느리거나, 빠른 경우를 처리하지 못한다.
- TIMEDIFF 오류 이유
TIMEDIFF로는 테스트 케이스를 넘겼을 수도 있다. 하지만 궁극적으로는 오류가 발생하는 코드로,
TIMEDIFF로 알 수 있는 최대 값이 838:59:59 이기 때문에, 이 보다 큰 값이 나온다면 사용이 불가하다.
즉, 해당 문제의 테스트 케이스는 맞췄어도 838:59:59가 넘는 값이 테케로 들어오면 처리하지 못한다.