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

MySQL에서 문자열을 날짜로 변환하는 방법: STR_TO_DATE() 함수 활용 가이드

MySQL에서 문자열 형태로 저장된 날짜 데이터를 실제 DATE 타입으로 변환해야 하는 경우가 자주 있습니다. 예를 들어 CSV 파일에서 가져온 데이터나 외부 시스템에서 전달받은 값이 '26,11,2018'처럼 문자열로 되어 있을 때, 이를 올바른 날짜 형식으로 바꿔야 정확한 비교, 정렬, 집계 작업이 가능합니다.

이럴 때 사용하는 것이 바로 STR_TO_DATE() 함수입니다. 이 함수는 지정된 형식 문자열(format string)에 따라 문자열을 해석하여 DATE 값으로 반환합니다.

STR_TO_DATE() 기본 문법

SELECT STR_TO_DATE('문자열값', '%d,%m,%Y') AS 별칭;

첫 번째 인자는 변환할 문자열이고, 두 번째 인자는 해당 문자열의 형식을 나타내는 포맷 지정자입니다. 주요 포맷 지정자는 다음과 같습니다.

  • %d — 일(day), 두 자리 숫자 (01~31)
  • %m — 월(month), 두 자리 숫자 (01~12)
  • %Y — 연도(year), 네 자리 숫자
  • %M — 월 이름 (November, January 등)

예제 1: 쉼표로 구분된 날짜 문자열 변환

다음 쿼리는 '26,11,2018'이라는 문자열을 '%d,%m,%Y' 형식으로 해석하여 날짜로 변환합니다.

mysql> SELECT STR_TO_DATE('26,11,2018','%d,%m,%Y');

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

+--------------------------------------+
| STR_TO_DATE('26,11,2018','%d,%m,%Y') |
+--------------------------------------+
| 2018-11-26                           |
+--------------------------------------+
1 row in set (0.00 sec)

문자열이 표준 날짜 형식인 2018-11-26으로 성공적으로 변환된 것을 확인할 수 있습니다.

예제 2: 영문 월 이름이 포함된 날짜 변환

STR_TO_DATE()는 'November 26 2018'처럼 월 이름이 영어로 표기된 문자열도 처리할 수 있습니다. 이 경우 %M(월 이름) 지정자를 사용합니다.

mysql> SELECT STR_TO_DATE("November 26 2018", "%M %d %Y");

실행 결과:

+---------------------------------------------+
| STR_TO_DATE("November 26 2018", "%M %d %Y") |
+---------------------------------------------+
| 2018-11-26                                  |
+---------------------------------------------+
1 row in set (0.03 sec)

활용 팁 및 주의사항

테이블의 VARCHAR 컬럼에 저장된 날짜 문자열을 일괄 변환하려면 UPDATE 문과 함께 사용할 수 있습니다.

UPDATE 테이블명
SET date_column = STR_TO_DATE(string_column, '%d,%m,%Y');

또한 변환 결과를 원하는 출력 형식으로 다시 표시하고 싶다면 DATE_FORMAT() 함수를 조합하면 됩니다.

SELECT DATE_FORMAT(STR_TO_DATE('26,11,2018','%d,%m,%Y'), '%Y년 %m월 %d일') AS formatted_date;

주의할 점은, 입력 문자열이 지정한 포맷과 일치하지 않거나 유효하지 않은 날짜일 경우 MySQL은 경고와 함께 NULL을 반환한다는 것입니다. 따라서 대량의 데이터를 변환하기 전에 샘플 데이터로 형식을 먼저 검증하는 것이 좋습니다.