[SQL] 시간차 구하기 - TIMEDIFF
2024. 9. 24. 20:49ㆍLanguage/SQL
두 시간의 시간차를 구할 때 사용되는 'TIMEDIFF' 함수에 대해 알아보자.
1. 기본 문법
SELECT TIMEDIFF(시간 데이터1, 시간 데이터2) AS 별명
FROM 테이블명
TIMEDIFF
첫 번째 시간에서 두 번째 시간을 뺄셈 연산하는 함수
- 결과적으로 '두 시간의 뺄셈 연산' 을 하는 함수라 이해하면 편하다. 시간 데이터의 경우 단일 값이 아닌 여러 값이 합쳐진 형태의 값이므로 일반적인 '-' 연산자를 통해 값을 얻기 어렵기 때문에 해당 함수를 통해 시간차를 구하는 것이 좋다.
- 연산 차가 '1시간(60분)' 미만일 경우 파라미터 위치에 상관 없이 양의 값을 반환하며, 연산 결과가 '1시간(60분)' 이상이 될 경우 'DATEDIFF' 함수처럼 파라미터 위치에 따라 양 또는 음의 값을 반환한다. 해당 부분은 최대한 함수를 다루어 보면 혼자서 파악한 부분이므로 반드시 옳다고는 할 수 없다.
- 두 시간 데이터의 형식이 같아야 한다. 직접 다뤄보니 여기서의 '형식' 은 'datetime', 'time' 등 시간 데이터를 저장하는 타입을 말하는 듯 하다. 'datetime, time' 을 비교하면 'null' 이 컬럼 값으로 저장되지만 'time, time(char, char)' 일 때 작성하는 방식(구분자 유무)만 다를 때는 문제 없이 연산 결과가 반환이 되었다.
2. 사용 예제
위에서 설명한 '함수 파라미터 위치' 에 대한 부분을 예제 이미지로 좀 더 설명하려 한다.
SELECT TIMEDIFF('000100', '010000') diff_time_a_1,
TIMEDIFF('000100', '010100') diff_time_a_2,
TIMEDIFF('00:01:00', '01:00:00') diff_time_b_1,
TIMEDIFF('00:01:00', '01:01:00') diff_time_b_2,
TIMEDIFF('2024-09-24 0:01:00', '2024-09-24 01:00:00') diff_time_c_1,
TIMEDIFF('2024-09-24 0:01:00', '2024-09-24 01:01:00') diff_time_c_2
'DATEDIFF' 와 완전히 동일하다면 첫 번째 파라미터에 두 번째 파라미터 보다 작은 값이 있을 경우 무조건 '음의(-) 값' 이 반환 될 것이다. 하지만 위 예제를 보면 'TIMEDIFF' 의 경우에 시간차가 '1시간' 이상일 때만, 'DATEDIFF' 와 같은 규칙으로 결과를 반환하는 것을 확인 할 수 있다.
예제의 모든 'TIMEDIFF' 함수의 파라미터를 두 번째가 첫 번째 보다 더 크게 설정해 테스트했다. 그리고 컬럼명은 '*_알파벳' 으로 구분되며 '*_알파벳_1' 이 '59분 차이' 인 경우고 '*_알파벳_2' 가 '60분 차이' 인 경우이다. 연산 결과에 '시간' 에 대한 값이 추가 되자마자 'DATEDIFF' 와 같은 규칙으로 결과를 반환하는 것을 확인할 수 있다.
참고 문서
'Language > SQL' 카테고리의 다른 글
[SQL] 모든 조합 만들기 - CROSS JOIN (0) | 2024.10.17 |
---|---|
[SQL] 두 날짜의 일수 차 구하기 - DATEDIFF (0) | 2024.09.24 |
[SQL] 이전 시간 구하기 - SUBTIME (0) | 2024.09.24 |
[SQL] 이후 시간 구하기 - ADDTIME (0) | 2024.09.24 |
[SQL] 이전 날짜 구하기 - DATE_SUB, SUBDATE (0) | 2024.09.24 |