프로그래머스 SQL 고득점 Kit
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit
관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS AS INS
JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME ASC;
ANIMAL_INS
테이블과 ANIMAL_OUTS
테이블에 있는 DATETIME 컬럼의 값들은 다음과 같은 형식으로 저장되어 있다. (예:2025-08-13 18:10:43
)
처음에는 DATE를 활용하여 다음과 같이 쿼리를 작성했다.
문제에서 요구하는 방식대로 결과값은 출력되었지만, 테스트 케이스를 실패했다.
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS AS INS
JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE DATE(INS.DATETIME) > DATE(OUTS.DATETIME)
ORDER BY INS.DATETIME ASC;
실패의 원인을 찾다가, DATE
는 날짜만 비교한다는 사실을 인지하게 되었다.
DATE(INS.DATETIME) > DATE(OUTS.DATETIME)
는 시간의 범위를 놓치게 된다.
(예: 2025-08-13 09:41:00 vs 2025-08-13 18:00:00)