MySQL에서 레코드를 삽입하면서 날짜 형식을 지정하고 싶다면, INSERT 문 안에서 DATE_FORMAT() 함수를 활용하면 됩니다. 이 함수는 원하는 패턴에 따라 날짜를 문자열로 변환해 주기 때문에, 저장 시점부터 일관된 형식의 데이터를 유지할 수 있습니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 만들어 보겠습니다. 여기서는 배송일(ShippingDate)을 저장하기 위해 varchar 타입의 컬럼 하나를 가진 간단한 테이블을 생성합니다.
mysql> create table DemoTable2012
-> (
-> ShippingDate varchar(20)
-> );
Query OK, 0 rows affected (0.48 sec)
2. INSERT 문에서 DATE_FORMAT()으로 날짜 형식 지정
이제 insert 명령을 사용하여 테이블에 레코드를 삽입해 보겠습니다. 아래 예시처럼 %d.%m.%Y 형식을 지정하면 '일.월.연도' 순서로 날짜가 저장됩니다.
mysql> insert into DemoTable2012 values(date_format(curdate(),'%d.%m.%Y'));
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable2012 values(date_format(now(),'%d.%m.%Y'));
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable2012 values(date_format('2014-01-21','%d.%m.%Y'));
Query OK, 1 row affected (0.17 sec)위 세 개의 INSERT 문은 각각 다음과 같은 방식으로 동작합니다.
- curdate(): 현재 날짜를 반환하여 지정한 형식으로 변환
- now(): 현재 날짜와 시간을 반환하며, 날짜 부분만 지정한 형식으로 변환
- 특정 날짜 문자열: '2014-01-21'처럼 직접 입력한 날짜를 원하는 형식으로 변환
3. 결과 확인
select 문을 실행하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable2012;
실행 결과는 다음과 같습니다.
+--------------+
| ShippingDate |
+--------------+
| 21.12.2019 |
| 21.12.2019 |
| 21.01.2014 |
+--------------+
3 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 |
| %i | 분 | 00~59 |
| %s | 초 | 00~59 |
이처럼 DATE_FORMAT() 함수를 INSERT 문과 함께 사용하면, 데이터베이스에 저장되는 순간부터 원하는 날짜 형식을 손쉽게 적용할 수 있습니다.