MySQL 테이블에서 DATETIME 값을 조회하면 기본적으로 'YYYY-MM-DD HH:MM:SS' 형식으로 출력됩니다. 만약 이 출력 형식을 변경하고 싶다면 MySQL에서 기본 제공하는 DATE_FORMAT() 함수를 사용하면 됩니다.
DATE_FORMAT() 기본 문법
SELECT DATE_FORMAT(날짜컬럼명, 원하는형식) AS 별칭 FROM 테이블명;
문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다.
1. 테이블 생성
mysql> create table UserDateFormat -> ( -> ProductId int, -> ProductDeliverDate datetime -> ); Query OK, 0 rows affected (0.93 sec)
2. 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다. 여기서는 date_add()와 now()를 활용해 현재 시점을 기준으로 연도를 더하거나 뺀 날짜를 입력했습니다.
mysql> insert into UserDateFormat values(100,date_add(now(),interval 1 year)); Query OK, 1 row affected (0.10 sec) mysql> insert into UserDateFormat values(101,date_add(now(),interval -1 year)); Query OK, 1 row affected (0.48 sec) mysql> insert into UserDateFormat values(102,date_add(now(),interval -3 year)); Query OK, 1 row affected (0.17 sec) mysql> insert into UserDateFormat values(103,date_add(now(),interval -2 year)); Query OK, 1 row affected (0.20 sec)
3. 전체 데이터 조회
SELECT 명령어로 테이블의 모든 레코드를 확인합니다.
mysql> select *from UserDateFormat;
출력 결과
+-----------+---------------------+ | ProductId | ProductDeliverDate | +-----------+---------------------+ | 100 | 2019-12-24 13:32:47 | | 101 | 2017-12-24 13:32:58 | | 102 | 2015-12-24 13:33:08 | | 103 | 2016-12-24 13:33:17 | +-----------+---------------------+ 4 rows in set (0.00 sec)
위 결과는 MySQL의 기본 DATETIME 형식 그대로입니다. 이제 DATE_FORMAT() 함수를 사용해 'DD-MM-YYYY' 형식으로 변환해 보겠습니다.
4. 'DD-MM-YYYY HH:MM:SS' 형식으로 변환
mysql> select date_format(ProductDeliverDate,'%d-%m-%Y %h:%i:%s') as UserFormat from UserDateFormat;
아래와 같이 날짜가 '일-월-연도' 순서로 출력되는 것을 확인할 수 있습니다. 참고로 %h는 12시간제를 의미합니다.
출력 결과
+----------------------+ | UserFormat | +----------------------+ | 24-12-2019 01:32:47 | | 24-12-2017 01:32:58 | | 24-12-2015 01:33:08 | | 24-12-2016 01:33:17 | +----------------------+ 4 rows in set (0.00 sec)
5. 24시간제 형식으로 변환
시간을 24시간제로 표시하고 싶다면 포맷 문자열에서 %H(대문자)를 사용하면 됩니다.
mysql> select date_format(ProductDeliverDate,'%d-%m-%Y %H:%i:%S') as UserFormat from UserDateFormat;
출력 결과
+----------------------+ | UserFormat | +----------------------+ | 24-12-2019 13:32:47 | | 24-12-2017 13:32:58 | | 24-12-2015 13:33:08 | | 24-12-2016 13:33:17 | +----------------------+ 4 rows in set (0.00 sec)
주요 포맷 지정자 정리
DATE_FORMAT()에서 자주 사용되는 주요 지정자는 다음과 같습니다.
%d: 일(01~31)%m: 월(01~12)%Y: 4자리 연도%H: 시(00~23, 24시간제)%h: 시(01~12, 12시간제)%i: 분(00~59)%s또는%S: 초(00~59)
이처럼 DATE_FORMAT() 함수를 활용하면 DATETIME 값을 프로젝트 요구 사항에 맞게 자유롭게 변환하여 출력할 수 있습니다.