MySQL에서 저장된 시간 값이 HH:MM:SS 형식일 때, 초 단위를 제외하고 HH:MM 형식만 표시하고 싶은 경우가 자주 있습니다. 이럴 때는 MySQL의 내장 함수인 TIME_FORMAT()을 사용하면 간단하게 해결할 수 있습니다.
TIME_FORMAT() 함수란?
TIME_FORMAT(time, format) 함수는 TIME 타입의 값을 지정한 형식 문자열에 맞춰 변환해 주는 함수입니다. 여기서 사용되는 주요 형식 지정자는 다음과 같습니다.
%H: 24시간제 기준의 시(00~23)%i: 분(00~59)%s: 초(00~59)
따라서 '%H:%i' 형식을 지정하면 시와 분만 출력됩니다.
예제 테이블 생성하기
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1419 -> ( -> ArrivalTime time -> ); Query OK, 0 rows affected (0.78 sec)
테이블이 정상적으로 생성되었습니다. 이제 INSERT 명령어를 사용하여 시간 데이터를 몇 개 삽입해 보겠습니다.
mysql> insert into DemoTable1419 values('12:30:45');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1419 values('11:00:55');
Query OK, 1 row affected (0.45 sec)
mysql> insert into DemoTable1419 values('09:59:34');
Query OK, 1 row affected (0.16 sec)저장된 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1419;
실행 결과는 다음과 같습니다.
+-------------+ | ArrivalTime | +-------------+ | 12:30:45 | | 11:00:55 | | 09:59:34 | +-------------+ 3 rows in set (0.00 sec)
현재까지는 모든 시간 값이 HH:MM:SS 형식으로 저장되어 있는 것을 확인할 수 있습니다.
HH:MM:SS를 HH:MM으로 변환하는 쿼리
이제 TIME_FORMAT() 함수를 활용하여 시간 형식을 HH:MM으로 변환하는 쿼리입니다.
mysql> select ArrivalTime, time_format(ArrivalTime,'%H:%i') from DemoTable1419;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------------+----------------------------------+ | ArrivalTime | time_format(ArrivalTime,'%H:%i') | +-------------+----------------------------------+ | 12:30:45 | 12:30 | | 11:00:55 | 11:00 | | 09:59:34 | 09:59 | +-------------+----------------------------------+ 3 rows in set (0.05 sec)
정리
TIME_FORMAT() 함수와 '%H:%i' 형식 지정자를 조합하면 MySQL에서 시간 값을 손쉽게 HH:MM 형식으로 변환할 수 있습니다. 원본 데이터는 그대로 유지되며, 조회 결과만 원하는 형식으로 표시되기 때문에 실무에서 화면 출력용 데이터를 가공할 때 매우 유용하게 활용됩니다.