[SQL] 오랜 기간 보호한 동물(2)

이말감·2022년 2월 4일
0

SQL

목록 보기
13/14

문제

링크

코드

SELECT I.ANIMAL_ID, I.NAME FROM ANIMAL_INS I
INNER JOIN ANIMAL_OUTS O ON O.ANIMAL_ID = I.ANIMAL_ID
ORDER BY (O.DATETIME - I.DATETIME) DESC
LIMIT 2;

풀이

보호 기간이 가장 길었던 동물이기 때문에 보호소에 들어온 날짜는 오래됐고, 입양간 날짜는 최근이어야 한다. 그러므로 입양 간 날짜 - 보호소에 들어온 날짜를 해아한다.
나는 그냥 바로 DATETIME끼리 빼주었는데, 아래와 같이 TIMESTAMPDIFF()함수를 이용해서 문제를 해결할 수 있다.

SELECT I.ANIMAL_ID, I.NAME FROM ANIMAL_INS I
INNER JOIN ANIMAL_OUTS O ON O.ANIMAL_ID = I.ANIMAL_ID
ORDER BY TIMESTAMPDIFF(MINUTE, O.DATETIME, I.DATETIME)
LIMIT 2;

TIMESTAMPDIFF

TIMESTAMPDIFF는 시간 또는 개월 수 등 여러 가지 형태의 계산을 할 수 있는 함수

TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
-- UNIT : 반환값 형식
-- 시작일, 종료일

반환값은 MONTH, YEAR, HOUR 외에도 MINUTE, SECOND ... 등 여러 가지 반환값을 지정할 수 있다.

참고 : https://ponyozzang.tistory.com/697

profile
전 척척학사지만 말하는 감자에요

0개의 댓글