문제내용
보호기간이 가장 길었던 동물 아이디와 이름을 조회하는 SQL문을 작성하는 문제
TIMESTAMPDIFF
더보기
TIMESTAMPDIFF
SQL에서 두 날짜 또는 시간 간의 차이를 계산하는 함수입니다. 이 함수는 두 날짜나 시간 사이의 차이를 지정한 단위로 반환합니다.
문법예시
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
- unit: 날짜 또는 시간 간격을 계산할 단위를 지정합니다. 다음 중 하나를 사용할 수 있습니다.
- FRAC_SECOND: 초의 소수점 이하 부분을 기준으로 차이를 계산합니다.
- SECOND: 초 단위로 차이를 계산합니다.
- MINUTE: 분 단위로 차이를 계산합니다.
- HOUR: 시간 단위로 차이를 계산합니다.
- DAY: 일 단위로 차이를 계산합니다.
- WEEK: 주 단위로 차이를 계산합니다.
- MONTH: 월 단위로 차이를 계산합니다.
- QUARTER: 분기 단위로 차이를 계산합니다.
- YEAR: 연 단위로 차이를 계산합니다.
- datetime_expr1: 기준이 되는 첫 번째 날짜 또는 시간 값입니다.
- datetime_expr2: 비교할 두 번째 날짜 또는 시간 값입니다.
활용예시
초 단위 차이 계산
SELECT TIMESTAMPDIFF(SECOND, '2024-08-01 12:00:00', '2024-08-01 12:10:00') AS seconds_difference;
결과: 600 (두 시간 간의 차이는 600초)
일 단위 차이 계산
SELECT TIMESTAMPDIFF(DAY, '2024-08-01', '2024-08-15') AS days_difference;
결과: 14 (두 날짜 간의 차이는 14일)
년 단위 차이 계산
SELECT TIMESTAMPDIFF(YEAR, '2020-01-01', '2024-01-01') AS years_difference;
결과: 4 (두 날짜 간의 차이는 4년)
번외
SELECT TIMESTAMPDIFF(second, '2024-08-01', '2024-08-15') AS days_difference;
이렇게 월 비교에서 초로 계산을 하면 이 쿼리의 결과는 1,209,600이 됩니다.
- DATEDIFF(date1, date2):
- 두 날짜 간의 차이를 일(day) 단위로 계산합니다.
- 예: DATEDIFF('2024-09-30', '2024-09-01')는 29를 반환합니다.
- TIMEDIFF(datetime1, datetime2):
- 두 날짜/시간 간의 차이를 시간 형식(‘HH:MM:SS’)으로 반환합니다.
- 예: TIMEDIFF('2024-09-30 12:00:00', '2024-09-01 10:00:00')는 11:59:59를 반환합니다.
- YEAR(), MONTH(), DAY():
- 특정 날짜에서 연도, 월, 일을 추출합니다.
- 예:
- YEAR('2024-09-30')는 2024를 반환합니다.
- MONTH('2024-09-30')는 9를 반환합니다.
- DAY('2024-09-30')는 30을 반환합니다.
문제 정답
SELECT ai.animal_id, ai.name
FROM animal_ins AS ai
JOIN animal_outs AS ao ON ai.animal_id = ao.animal_id
ORDER BY TIMESTAMPDIFF(SECOND, ai.datetime, ao.datetime) DESC
LIMIT 2;