MySQL 시간 필드에서 초를 제거하는 방법
MySQL에서 시간(time) 필드에 저장된 값에서 초 단위를 제거하고 싶다면 TIME_FORMAT() 함수를 사용하면 됩니다. 이 함수는 지정한 형식 문자열에 따라 시간 값을 원하는 형태로 변환해 줍니다.
기본 문법
SELECT TIME_FORMAT(컬럼명1, "%H:%i") AS 별칭1, TIME_FORMAT(컬럼명2, "%H:%i") AS 별칭2 FROM 테이블명;
여기서 %H는 24시간 형식의 '시', %i는 '분'을 의미합니다. 초에 해당하는 %s를 포함하지 않으면 결과에서 자동으로 초가 제거됩니다.
예제 테이블 생성
실제 동작을 확인하기 위해 먼저 예제용 테이블을 만들어 보겠습니다.
mysql> create table removeSecondsFromTime
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> StartTime time,
-> EndTime time,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.71 sec)데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into removeSecondsFromTime(StartTime,EndTime) values('10:20:45','11:21:40');
Query OK, 1 row affected (0.43 sec)
mysql> insert into removeSecondsFromTime(StartTime,EndTime) values('12:30:55','13:20:21');
Query OK, 1 row affected (0.31 sec)
mysql> insert into removeSecondsFromTime(StartTime,EndTime) values('14:40:57','15:55:02');
Query OK, 1 row affected (0.24 sec)저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from removeSecondsFromTime;
실행 결과는 다음과 같습니다.
+----+-----------+----------+ | Id | StartTime | EndTime | +----+-----------+----------+ | 1 | 10:20:45 | 11:21:40 | | 2 | 12:30:55 | 13:20:21 | | 3 | 14:40:57 | 15:55:02 | +----+-----------+----------+ 3 rows in set (0.00 sec)
현재 StartTime과 EndTime 컬럼에는 초 단위까지 저장되어 있는 것을 확인할 수 있습니다.
TIME_FORMAT()으로 초 제거하기
이제 TIME_FORMAT() 함수를 적용하여 시간 필드에서 초를 제거하는 쿼리를 실행해 보겠습니다.
mysql> select TIME_FORMAT(StartTime, "%H:%i") as StartingTime, -> TIME_FORMAT(EndTime, "%H:%i") as EndingTime -> from removeSecondsFromTime;
실행 결과는 다음과 같습니다.
+--------------+------------+ | StartingTime | EndingTime | +--------------+------------+ | 10:20 | 11:21 | | 12:30 | 13:20 | | 14:40 | 15:55 | +--------------+------------+ 3 rows in set (0.00 sec)
정리
위 결과에서 볼 수 있듯이, TIME_FORMAT() 함수에 %H:%i 형식을 지정하면 시간과 분만 표시되고 초는 자동으로 제거됩니다. 참고로 이 방법은 실제 데이터베이스에 저장된 값을 변경하는 것이 아니라 조회 결과에서만 초를 숨기는 것이므로, 원본 데이터는 그대로 유지된다는 점을 기억하세요.