[SQL] 이전 시간 구하기 - SUBTIME
2024. 9. 24. 19:12ㆍLanguage/SQL
시간 데이터에 특정 값을 빼 이후 시간 데이터를 반환하는 'SUBTIME' 에 대해 알아보자.
1. 기본 문법
SELECT SUBTIME(기준 시간 데이터, 더할 시간 간격) AS 별명
FROM 테이블명
SUBTIME
특정 시간 데이터에 지정한 간격 값(시간)을 빼는 함수
- 지정 가능한 간격은 '시, 분, 초(마이크로 단위까지)' 이다. 간격 지정 방식은 '시간 형식' 의 문자를 입력하면 된다.
- 단, 주의 할 것은 우리가 '현실에서 볼 수 있는 시간' 을 입력해야 한다는 것이다. 예를 들어 "1시간 50분 뒤에 봅시다." 라고 말하지 "110분 뒤에 봅시다" 라 말하는 사람은 거의 없다. 이처럼 시간 간격 지정시 '01:50:00' 을 값으로 지정해야 하는 것이다. 만약 '시, 분, 초' 자리에 '60이상' 의 값을 넣으면 에러는 나지 않지만 컬럼 값에 'null' 이 저장된다.
2. 사용 예제
현재 시간이 '12:00:00' 일 때, '5시간', '5분', '5초' 이전의 시간을 각각 구하는 솔루션을 작성한다.
SELECT '12:00:00' ,
SUBTIME('12:00:00', '5:0:0') five_hours_ago,
SUBTIME('12:00:00', '50000') five_hours_ago_2,
SUBTIME('12:00:00', '0:5:0') five_minutes_ago,
SUBTIME('12:00:00', '500') five_minutes_ago_2,
SUBTIME('12:00:00', '0:0:5') five_seconds_ago,
SUBTIME('12:00:00', '5') five_seconds_ago_2
시간 간격을 지정할 때 2가지 형식을 사용할 수 있다. '콜론(:)' 을 구분자로 사용한 '00:00:00' 형식과 구분자가 없는 '000000' 형식이다. 예제에서는 컬럼명 마지막에 '_2' 를 갖는 컬럼들이 구분자가 없는 형식을 사용한 것이다. 두 형식 모두 결과 값은 같다. 그리고 구분자가 있는 형식의 경우 각 '시, 분, 초' 작성시 앞자리의 '0' 은 생략해도 괜찮다.
참고 문서
'Language > SQL' 카테고리의 다른 글
[SQL] 시간차 구하기 - TIMEDIFF (0) | 2024.09.24 |
---|---|
[SQL] 두 날짜의 일수 차 구하기 - DATEDIFF (0) | 2024.09.24 |
[SQL] 이후 시간 구하기 - ADDTIME (0) | 2024.09.24 |
[SQL] 이전 날짜 구하기 - DATE_SUB, SUBDATE (0) | 2024.09.24 |
[SQL] 이후 날짜 구하기 - DATE_ADD, ADDDATE (0) | 2024.09.24 |