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

MySQL에서 날짜를 파싱하는 방법 – STR_TO_DATE() 함수 활용 가이드

MySQL에서 문자열 형태의 날짜 데이터를 실제 DATE 타입으로 변환하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 지정된 형식에 맞춰 문자열을 해석하고, 이를 날짜 값으로 반환해 줍니다.

STR_TO_DATE() 기본 문법

STR_TO_DATE() 함수의 기본적인 사용 문법은 다음과 같습니다.

SELECT str_to_date(yourColumnName, 'format') AS anyVariableName FROM yourTableName;

위 문법에서 'format' 자리에는 '%d-%b-%y'와 같은 형식 지정자가 들어갑니다. 각 지정자의 의미는 다음과 같습니다.

  • %d : 일(day), 두 자리 숫자
  • %b : 축약된 월 이름 (예: Nov, Dec)
  • %y : 두 자리 연도

실습용 테이블 생성하기

함수의 동작을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 아래는 테이블 생성 쿼리입니다.

mysql> create table ParseDateDemo
   -> (
   -> yourDate varchar(200)
   -> );
Query OK, 0 rows affected (0.55 sec)

샘플 데이터 삽입

이제 INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into ParseDateDemo values('10-Nov-18');
Query OK, 1 row affected (0.11 sec)

mysql> insert into ParseDateDemo values('15-Nov-18');
Query OK, 1 row affected (0.17 sec)

mysql> insert into ParseDateDemo values('10-Dec-18');
Query OK, 1 row affected (0.14 sec)

mysql> insert into ParseDateDemo values('10-Aug-17');
Query OK, 1 row affected (0.14 sec)

저장된 데이터 확인

SELECT 문으로 테이블에 저장된 레코드를 조회해 보겠습니다.

mysql> select *from ParseDateDemo;

실행 결과는 다음과 같습니다.

+-----------+
| yourDate  |
+-----------+
| 10-Nov-18 |
| 15-Nov-18 |
| 10-Dec-18 |
| 10-Aug-17 |
+-----------+
4 rows in set (0.00 sec)

STR_TO_DATE()로 날짜 파싱하기

이제 MySQL에서 날짜를 파싱하는 실제 쿼리를 살펴보겠습니다.

mysql> select str_to_date(yourDate,'%d-%b-%y') as DateNumber from ParseDateDemo;

위 쿼리를 실행하면 '10-Nov-18'처럼 저장되어 있던 문자열이 표준 날짜 형식인 '2018-11-10'으로 변환됩니다. 실행 결과는 다음과 같습니다.

+------------+
| DateNumber |
+------------+
| 2018-11-10 |
| 2018-11-15 |
| 2018-12-10 |
| 2017-08-10 |
+------------+
4 rows in set (0.02 sec)

이처럼 STR_TO_DATE() 함수를 활용하면 VARCHAR 타입으로 저장된 다양한 형식의 날짜 문자열을 손쉽게 DATE 타입으로 변환할 수 있습니다. 참고로 반대로 날짜를 특정 형식의 문자열로 바꾸고 싶다면 DATE_FORMAT() 함수를 사용하면 되며, 두 함수는 서로 짝을 이루어 자주 함께 활용됩니다.