Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 초 단위 없이 시간만 표시하는 방법 - DATE_FORMAT() 함수 활용 가이드

MySQL에서 TIME 타입으로 저장된 값은 기본적으로 'HH:MM:SS' 형태로 초까지 함께 출력됩니다. 하지만 실무에서는 화면에 시간과 분만 깔끔하게 보여주고 싶은 경우가 많습니다. 이럴 때 DATE_FORMAT() 함수를 사용하면 간단하게 해결할 수 있습니다.

DATE_FORMAT() 함수 기본 문법

SELECT DATE_FORMAT(컬럼명, '%k:%i') AS 별칭 FROM 테이블명;

형식 지정자로 '%H:%i'를 사용해도 동일한 결과를 얻을 수 있습니다. 두 지정자의 차이점은 다음과 같습니다.

  • %k : 시간을 0~23 범위로 표시하되, 한 자리 숫자 앞에 0을 붙이지 않습니다. (예: 9:30)
  • %H : 시간을 항상 두 자리로 표시하며, 한 자리 숫자 앞에 0을 채웁니다. (예: 09:30)

예제 테이블 생성하기

문법을 이해하기 위해 먼저 예제용 테이블을 만들어 보겠습니다.

mysql> create table TimeDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> LastLoginTime time
    -> );
Query OK, 0 rows affected (0.56 sec)

샘플 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into TimeDemo(LastLoginTime) values('09:30:35');
Query OK, 1 row affected (0.20 sec)
mysql> insert into TimeDemo(LastLoginTime) values('10:45:30');
Query OK, 1 row affected (0.19 sec)
mysql> insert into TimeDemo(LastLoginTime) values('13:33:58');
Query OK, 1 row affected (0.24 sec)
mysql> insert into TimeDemo(LastLoginTime) values('15:45:31');
Query OK, 1 row affected (0.21 sec)
mysql> insert into TimeDemo(LastLoginTime) values('16:40:36');
Query OK, 1 row affected (0.17 sec)

저장된 전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from TimeDemo;

실행 결과는 다음과 같습니다. 아직 초 단위까지 모두 출력되는 것을 확인할 수 있습니다.

+----+---------------+
| Id | LastLoginTime |
+----+---------------+
|  1 | 09:30:35      |
|  2 | 10:45:30      |
|  3 | 13:33:58      |
|  4 | 15:45:31      |
|  5 | 16:40:36      |
+----+---------------+
5 rows in set (0.00 sec)

초를 제외한 시간 조회하기 (%k:%i 사용)

이제 DATE_FORMAT() 함수에 '%k:%i' 형식 지정자를 적용하여 초 없이 시간만 가져오는 쿼리입니다.

mysql> select DATE_FORMAT(LastLoginTime,'%k:%i') as `Time` from TimeDemo;

실행 결과입니다. 9시처럼 한 자리 수인 경우 앞에 0이 붙지 않습니다.

+-------+
| Time  |
+-------+
| 9:30  |
| 10:45 |
| 13:33 |
| 15:45 |
| 16:40 |
+-------+
5 rows in set (0.00 sec)

항상 두 자리 시간으로 표시하기 (%H:%i 사용)

형식 지정자를 '%H:%i'로 변경하면 한 자리 시간도 0으로 채워 두 자리로 일관성 있게 표시됩니다.

mysql> select DATE_FORMAT(LastLoginTime,' %H:%i') as `Time` from TimeDemo;

실행 결과입니다.

+--------+
| Time   |
+--------+
| 09:30  |
| 10:45  |
| 13:33  |
| 15:45  |
| 16:40  |
+--------+
5 rows in set (0.00 sec)

마무리 정리

MySQL에서 TIME 컬럼의 초 단위를 제거하고 싶다면 DATE_FORMAT() 함수와 형식 지정자를 조합하면 됩니다. 상황에 따라 적절한 지정자를 선택하세요.

  • %k:%i → 9:30 (앞자리 0 생략)
  • %H:%i → 09:30 (항상 두 자리 유지)

참고로 %i는 분(Minutes)을 의미하며, 이 외에도 %s(초), %p(AM/PM), %r(12시간제 전체 시간) 등 다양한 형식 지정자를 활용하면 원하는 시간 포맷을 자유롭게 만들 수 있습니다.