[SQL] 이전 시간 구하기 - SUBTIME

2024. 9. 24. 19:12Language/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' 은 생략해도 괜찮다.


참고 문서