MySQL 데이터베이스에 날짜를 저장할 때 가장 간편한 방법은 STR_TO_DATE() 함수를 사용하는 것입니다. 이 함수는 문자열로 된 날짜 값을 지정한 형식에 맞춰 DATE 타입으로 변환해 주기 때문에, '일/월/년'처럼 다양한 형태의 날짜 문자열을 안전하게 저장할 수 있습니다.
insert into yourTableName values(STR_TO_DATE('yourDate', '%d/%m/%Y'));1. 테이블 생성하기
먼저 날짜를 저장할 테이블을 생성합니다. 아래 예제에서는 입학일(AdmissionDate)을 저장할 수 있도록 DATE 타입의 컬럼 하나를 만들었습니다.
mysql> create table DemoTable
(
AdmissionDate date
);
Query OK, 0 rows affected (0.62 sec)2. STR_TO_DATE()로 날짜 데이터 삽입하기
이제 insert 명령어와 함께 STR_TO_DATE() 함수를 사용하여 레코드를 삽입합니다. '%d/%m/%Y' 형식 지정자는 각각 일(day), 월(month), 연도(year)를 의미합니다.
mysql> insert into DemoTable values(STR_TO_DATE('10/01/2013', '%d/%m/%Y'));
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(STR_TO_DATE('31/01/2015', '%d/%m/%Y'));
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(STR_TO_DATE('23/04/2019', '%d/%m/%Y'));
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values(STR_TO_DATE('01/03/2019', '%d/%m/%Y'));
Query OK, 1 row affected (0.48 sec)3. 저장된 데이터 확인하기
select 명령어를 사용하여 테이블에 저장된 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다. '일/월/년' 형식으로 입력했던 값들이 MySQL의 표준 날짜 형식인 '년-월-일'(YYYY-MM-DD)로 자동 변환되어 저장된 것을 확인할 수 있습니다.
+---------------+ | AdmissionDate | +---------------+ | 2013-01-10 | | 2015-01-31 | | 2019-04-23 | | 2019-03-01 | +---------------+ 4 rows in set (0.00 sec)
자주 사용되는 형식 지정자
STR_TO_DATE() 함수에서 활용할 수 있는 주요 형식 지정자는 다음과 같습니다.
%d : 일(01~31)
%m : 월(01~12)
%Y : 4자리 연도(예: 2024)
%y : 2자리 연도(예: 24)
%H : 시(00~23)
%i : 분(00~59)
%s : 초(00~59)
이처럼 STR_TO_DATE() 함수를 활용하면 입력되는 날짜 문자열의 형식을 명확하게 지정할 수 있어, 잘못된 날짜 해석으로 인한 오류를 방지하고 데이터의 일관성을 유지할 수 있습니다.