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

MySQL STR_TO_DATE 함수로 문자열 날짜 형식 변환하기

MySQL에서 varchar 타입으로 저장된 날짜 문자열은 정렬이나 비교 연산에 제약이 많습니다. 이럴 때 STR_TO_DATE() 함수를 사용하면 문자열을 표준 DATETIME 형식으로 손쉽게 변환할 수 있습니다. 이번 글에서는 실제 예제를 통해 날짜 형식을 변환하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 날짜 값을 varchar 타입으로 저장할 테이블을 생성합니다.

mysql> create table DemoTable(DueDate varchar(100));
Query OK, 0 rows affected (0.78 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 다양한 형식의 날짜 문자열을 입력합니다.

mysql> insert into DemoTable values('10-01-2019 10:19:20');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('12-03-2018 11:00:00');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('02-23-2018 04:20:40');
Query OK, 1 row affected (0.19 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+---------------------+
| DueDate             |
+---------------------+
| 10-01-2019 10:19:20 |
| 12-03-2018 11:00:00 |
| 02-23-2018 04:20:40 |
+---------------------+
3 rows in set (0.00 sec)

현재 날짜가 '월-일-년 시:분:초' 형태의 단순 문자열로 저장되어 있어, 이 상태로는 날짜 연산이 불가능합니다.

4. STR_TO_DATE로 날짜 형식 변환하기

다음 쿼리는 REPLACE 함수와 STR_TO_DATE 함수를 조합하여 문자열 날짜를 표준 DATETIME 형식으로 변환합니다.

mysql> SELECT STR_TO_DATE(REPLACE(DueDate,"'",''), '%c-%e-%Y %T') from DemoTable;

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

+-----------------------------------------------------+
| STR_TO_DATE(REPLACE(DueDate,"'",''), '%c-%e-%Y %T') |
+-----------------------------------------------------+
| 2019-10-01 10:19:20                                 |
| 2018-12-03 11:00:00                                 |
| 2018-02-23 04:20:40                                 |
+-----------------------------------------------------+
3 rows in set (0.00 sec)

형식 지정자(Format Specifier) 정리

위 쿼리에서 사용된 주요 형식 지정자의 의미는 다음과 같습니다.

  • %c — 월(1~12), 앞자리 0 생략
  • %e — 일(1~31), 앞자리 0 생략
  • %Y — 4자리 연도
  • %T — 24시간제 시간(hh:mm:ss)

REPLACE 함수는 문자열에 포함될 수 있는 따옴표 등의 불필요한 문자를 제거하는 역할을 합니다. 이처럼 STR_TO_DATE 함수를 활용하면 다양한 형식의 날짜 문자열을 MySQL이 인식할 수 있는 DATETIME 값으로 깔끔하게 변환할 수 있으며, 이후 DATE_ADD, DATEDIFF 같은 날짜 함수도 자유롭게 사용할 수 있습니다.