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

MySQL에서 varchar로 저장된 날짜를 올바른 날짜 형식으로 변환하는 방법

날짜가 varchar 데이터 타입으로 저장되어 있어서, 즉 올바른 날짜 형식이 아니라고 가정해 보겠습니다. 이런 경우 MySQL의 STR_TO_DATE() 함수를 사용하면 문자열을 날짜 형식으로 손쉽게 변환할 수 있습니다.

테이블 생성하기

먼저 테이블을 생성하겠습니다. 다음은 CREATE TABLE 쿼리입니다.

mysql> create table convertDateDemo
    -> (
    -> AdmissionDate varchar(200)
    -> );
Query OK, 0 rows affected (0.63 sec)

데이터 삽입하기

INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into convertDateDemo values('April 04 2019');
Query OK, 1 row affected (0.18 sec)

mysql> insert into convertDateDemo values('May 05 2018');
Query OK, 1 row affected (0.16 sec)

mysql> insert into convertDateDemo values('January 01 2012');
Query OK, 1 row affected (0.12 sec)

mysql> insert into convertDateDemo values('June 12 2016');
Query OK, 1 row affected (0.16 sec)

저장된 레코드 조회하기

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

mysql> select * from convertDateDemo;

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

+-----------------+
| AdmissionDate |
+-----------------+
| April 04 2019 |
| May 05 2018 |
| January 01 2012 |
| June 12 2016 |
+-----------------+
4 rows in set (0.00 sec)

보시는 것처럼 날짜가 'April 04 2019'처럼 영문 월 이름이 포함된 문자열로 저장되어 있어 정렬이나 날짜 연산에 바로 사용하기 어렵습니다.

STR_TO_DATE() 함수로 날짜 변환하기

다음은 STR_TO_DATE() 함수를 사용하여 날짜를 변환하는 쿼리입니다. 이 함수는 첫 번째 인자로 변환할 문자열을, 두 번째 인자로 해당 문자열의 입력 형식을 지정합니다.

mysql> select STR_TO_DATE(AdmissionDate, '%M %e %Y %l:%i%p') AS ConvertDate from
convertDateDemo;

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

+---------------------+
| ConvertDate |
+---------------------+
| 2019-04-04 00:00:00 |
| 2018-05-05 00:00:00 |
| 2012-01-01 00:00:00 |
| 2016-06-12 00:00:00 |
+---------------------+
4 rows in set (0.05 sec)

결과에서 확인할 수 있듯이 'April 04 2019'와 같은 문자열이 '2019-04-04 00:00:00' 형식의 DATETIME 값으로 성공적으로 변환되었습니다. 여기서 사용된 주요 형식 지정자는 다음과 같습니다.

  • %M : 전체 월 이름 (April, May 등)
  • %e : 앞자리 0이 없는 일(日)
  • %Y : 4자리 연도
  • %l:%i%p : 12시간제 시간, 분, 오전/오후 표시

만약 시간 정보가 필요 없고 날짜만 변환하고 싶다면 %M %e %Y까지만 지정하면 됩니다. 이렇게 변환된 값은 DATE 또는 DATETIME 컬럼에 저장하거나, 날짜 비교·정렬·기간 계산 등 다양한 SQL 연산에 활용할 수 있습니다.