SQL 이것저것

[MySQL] DATEDIFF(), TIMESTAMPDIFF()

pjw250 2024. 10. 9. 11:27

코딩테스트 연습 - 오랜 기간 보호한 동물(2) | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

[1] DATEDIFF (n, m)를 이용한 두 날짜 값간의 차이 구하기 n이 m보다 커야됨. (최근)

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY DATEDIFF(B.DATETIME, A.DATETIME) DESC LIMIT 2;

 

 

[2] TIMESTAMPDIFF(X, n, m) - X에 옵션을 넣고 아래 경우엔 DAY, n 날짜 부터 m 날짜 까지의 갭을 계산함. DATEDIFF()와 다르게 시작하는 날, 끝나는 날 순서대로 넣어야함.

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY TIMESTAMPDIFF(DAY,A.DATETIME,B.DATETIME) DESC LIMIT 2;

 

 

[3] 요건 인라인 뷰를 이용하여 푸는 방법

SELECT ANIMAL_ID, NAME
FROM
	(SELECT B.ANIMAL_ID, B.NAME,
    TIMESTAMPDIFF(DAY, A.DATETIME, B.DATETIME) DURATION
	FROM ANIMAL_OUTS B LEFT JOIN ANIMAL_INS A ON A.ANIMAL_ID = B.ANIMAL_ID
    ORDER BY DURATION DESC) Q
LIMIT 2;