개요
데이터베이스에 저장된 날짜는 기본적으로 yyyy-mm-dd 형식으로 저장되지만, 화면에 출력할 때는 상황에 따라 다른 형식이 필요할 수 있습니다. 이 글에서는 PHP와 MySQL에서 날짜 형식을 dd/mm/yyyy로 변경하는 방법을 예제와 함께 자세히 알아보겠습니다.
PHP에서 date() 함수로 날짜 형식 변경하기
PHP에서는 date() 함수를 사용하여 날짜 형식을 손쉽게 변경할 수 있습니다. 기본 문법은 다음과 같습니다.
date(d/m/Y, yourDateTimeVariable);
먼저 strtotime() 함수를 사용해 문자열을 날짜(타임스탬프)로 변환한 뒤, 원하는 형식으로 출력할 수 있습니다. 아래는 datetime 값을 포맷하는 PHP 코드 예제입니다.
$LogintDate = strtotime('2019-01-12');
echo date('d/m/Y', $LogintDate);실행 결과
12/01/2019
위 코드에서 '2019-01-12'라는 문자열이 12/01/2019(일/월/년) 형식으로 성공적으로 변환된 것을 확인할 수 있습니다.
MySQL에서 DATE_FORMAT() 함수로 날짜 형식 변경하기
MySQL에서는 DATE_FORMAT() 함수를 사용하여 조회 시점에 날짜 형식을 변경할 수 있습니다. 기본 문법은 다음과 같습니다.
SELECT DATE_FORMAT(yourColumnName,'%d/%m/%Y') as anyVariableName FROM yourTableName;
예제 테이블 생성
문법을 실제로 이해하기 위해 테스트용 테이블을 먼저 생성해 보겠습니다.
mysql> create table Date_FormatDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> LoginDate datetime,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.64 sec)
샘플 데이터 입력
INSERT 명령을 사용하여 여러 개의 날짜 데이터를 입력합니다.
mysql> insert into Date_FormatDemo(LoginDate) values(curdate());
Query OK, 1 row affected (0.17 sec)
mysql> insert into Date_FormatDemo(LoginDate) values(now());
Query OK, 1 row affected (0.27 sec)
mysql> insert into Date_FormatDemo(LoginDate) values('2019-11-12');
Query OK, 1 row affected (0.11 sec)
mysql> insert into Date_FormatDemo(LoginDate) values(date_add(now(),interval 2 day));
Query OK, 1 row affected (0.13 sec)
mysql> insert into Date_FormatDemo(LoginDate) values(date_add(curdate(),interval -2 day));
Query OK, 1 row affected (0.22 sec)
저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from Date_FormatDemo;
조회 결과는 다음과 같습니다.
+----+---------------------+
| Id | LoginDate |
+----+---------------------+
| 1 | 2019-01-12 00:00:00 |
| 2 | 2019-01-12 22:53:53 |
| 3 | 2019-11-12 00:00:00 |
| 4 | 2019-01-14 22:54:27 |
| 5 | 2019-01-10 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)
dd/mm/yyyy 형식으로 변환하여 조회
이제 DATE_FORMAT() 함수를 적용하여 날짜를 dd/mm/yyyy 형식으로 변경해 보겠습니다.
mysql> select date_format(LoginDate,'%d/%m/%Y') as DateFormat from Date_FormatDemo;
변환 결과는 다음과 같습니다.
+------------+
| DateFormat |
+------------+
| 12/01/2019 |
| 12/01/2019 |
| 12/11/2019 |
| 14/01/2019 |
| 10/01/2019 |
+------------+
5 rows in set (0.00 sec)
정리
지금까지 살펴본 것처럼, PHP에서는 date() 함수와 strtotime() 함수를 조합하고, MySQL에서는 DATE_FORMAT() 함수를 사용하면 저장된 날짜 데이터를 원하는 형식(dd/mm/yyyy 등)으로 자유롭게 변환하여 출력할 수 있습니다. 데이터베이스에는 표준 형식으로 날짜를 저장하고, 출력 단계에서만 형식을 변환하는 것이 유지보수 측면에서 권장되는 방법입니다.