MySQL의 SELECT 문에서 날짜 형식을 변경하는 가장 효과적인 방법은 DATE_FORMAT() 함수를 사용하는 것입니다. 이 함수는 날짜나 datetime 값을 원하는 형식의 문자열로 변환해 줍니다.
DATE_FORMAT 기본 문법
SELECT DATE_FORMAT(yourColumnName, "%d/%m/%Y %H:%i") AS anyAliasName FROM yourTableName WHERE yourCondition;
예제 테이블 생성
개념을 쉽게 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table bestDateFormatDemo - > ( - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - > ArrivalDateTime datetime - > ); Query OK, 0 rows affected (0.64 sec)
샘플 데이터 삽입
INSERT 명령을 사용하여 테이블에 여러 레코드를 삽입합니다.
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values(now());
Query OK, 1 row affected (0.11 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values(date_add(now(),interval -2 year));
Query OK, 1 row affected (0.33 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values('2014-01-31 13:45:56');
Query OK, 1 row affected (0.15 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values('2016-02-11 12:40:30');
Query OK, 1 row affected (0.17 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values('2018-12-31 12:59:59');
Query OK, 1 row affected (0.19 sec)저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from bestDateFormatDemo;
실행 결과는 다음과 같습니다.
+----+---------------------+ | Id | ArrivalDateTime | +----+---------------------+ | 1 | 2019-02-22 22:50:10 | | 2 | 2017-02-22 22:50:28 | | 3 | 2014-01-31 13:45:56 | | 4 | 2016-02-11 12:40:30 | | 5 | 2018-12-31 12:59:59 | +----+---------------------+ 5 rows in set (0.00 sec)
날짜 형식 변경하기
이제 DATE_FORMAT 함수를 사용하여 날짜 형식을 '일/월/년 시:분' 형태로 변경하는 쿼리입니다.
mysql> SELECT DATE_FORMAT(ArrivalDateTime, "%d/%m/%Y %H:%i")AS changeDateFormat FROM bestDateFormatDemo WHERE Id IN(1,2,3,4,5);
실행 결과는 다음과 같습니다.
+------------------+ | changeDateFormat | +------------------+ | 22/02/2019 22:50 | | 22/02/2017 22:50 | | 31/01/2014 13:45 | | 11/02/2016 12:40 | | 31/12/2018 12:59 | +------------------+ 5 rows in set (0.28 sec)
12시간 형식으로 표시하기
시간을 24시간 형식이 아닌 12시간 형식으로 표시하고 싶다면, 형식 지정자에서 대문자 '%H' 대신 소문자 '%h'를 사용하면 됩니다.
mysql> SELECT DATE_FORMAT(ArrivalDateTime, "%d/%m/%Y %h:%i")AS changeDateFormat FROM bestDateFormatDemo WHERE Id IN(1,2,3,4,5);
실행 결과는 다음과 같습니다.
+------------------+ | changeDateFormat | +------------------+ | 22/02/2019 10:50 | | 22/02/2017 10:50 | | 31/01/2014 01:45 | | 11/02/2016 12:40 | | 31/12/2018 12:59 | +------------------+ 5 rows in set (0.00 sec)
자주 사용되는 DATE_FORMAT 형식 지정자
참고로 DATE_FORMAT 함수에서 자주 쓰이는 주요 형식 지정자는 다음과 같습니다.
- %Y : 4자리 연도 (예: 2024)
- %y : 2자리 연도 (예: 24)
- %m : 2자리 월 (01~12)
- %d : 2자리 일 (01~31)
- %H : 24시간 형식의 시간 (00~23)
- %h : 12시간 형식의 시간 (01~12)
- %i : 분 (00~59)
- %s : 초 (00~59)
이처럼 DATE_FORMAT 함수를 활용하면 MySQL에서 날짜와 시간 데이터를 다양한 형식으로 자유롭게 변환하여 출력할 수 있습니다.