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

MySQL STR_TO_DATE() 함수로 형식 지정자를 설정하고 문자열을 날짜로 변환하는 방법

MySQL에서 STR_TO_DATE() 함수는 문자열을 날짜 타입으로 변환할 때 사용합니다. 이 함수를 올바르게 사용하려면 변환 대상 문자열의 형식에 맞는 형식 지정자(format specifier)를 반드시 함께 지정해야 합니다.

STR_TO_DATE() 기본 문법

select STR_TO_DATE(컬럼명, '형식지정자') from 테이블명;

그럼 실제 예제를 통해 살펴보겠습니다. 먼저 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> AdmissionDate varchar(100)
-> );
Query OK, 0 rows affected (0.55 sec)

다음으로 insert 명령어를 사용해 몇 개의 레코드를 삽입합니다. 여기서 날짜는 '일-월-연도' 순서의 문자열로 저장했습니다.

mysql> insert into DemoTable values('01-12-2019');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values('15-06-2019');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values('21-01-2016');
Query OK, 1 row affected (0.19 sec)

select 문을 사용해 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

위 쿼리는 다음과 같은 결과를 출력합니다.

+---------------+
| AdmissionDate |
+---------------+
| 01-12-2019 |
| 15-06-2019 |
| 21-01-2016 |
+---------------+
3 rows in set (0.00 sec)

현재 날짜 데이터가 varchar 타입의 문자열로 저장되어 있기 때문에, 날짜 연산이나 정렬에 활용하기 어렵습니다. 이제 STR_TO_DATE() 함수에 형식 지정자를 설정해 문자열을 진짜 날짜 값으로 변환해 보겠습니다.

STR_TO_DATE()로 문자열을 날짜로 변환하기

저장된 문자열이 '일-월-연도' 형태이므로, 형식 지정자를 '%d-%m-%Y'로 지정합니다. 각 지정자의 의미는 다음과 같습니다.

  • %d : 일(day, 00~31)
  • %m : 월(month, 00~12)
  • %Y : 4자리 연도(year)
mysql> select STR_TO_DATE(AdmissionDate,'%d-%m-%Y') from DemoTable;

출력 결과

위 쿼리는 다음과 같은 결과를 출력합니다.

+---------------------------------------+
| STR_TO_DATE(AdmissionDate,'%d-%m-%Y') |
+---------------------------------------+
| 2019-12-01 |
| 2019-06-15 |
| 2016-01-21 |
+---------------------------------------+
3 rows in set (0.04 sec)

실행 결과를 보면 '일-월-연도' 형식의 문자열이 MySQL 표준 날짜 형식인 'YYYY-MM-DD'로 성공적으로 변환된 것을 확인할 수 있습니다. 이렇게 변환된 값은 DATE 타입처럼 날짜 비교, 정렬, 날짜 함수 적용 등에 활용할 수 있습니다.