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

MySQL DATE_FORMAT() 함수로 DATETIME을 'DD-MM-YYYY HH:MM:SS' 형식으로 출력하는 방법

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 값을 프로젝트 요구 사항에 맞게 자유롭게 변환하여 출력할 수 있습니다.